最近发现python也有与node的nvm类似的版本管理工具,特在此给大家分享一下如何使用。
安装
查阅官方文档 pyenv-win
方法一
根据官方文档的命令:Invoke-WebRequest -UseBasicParsing -Uri "raw.githubusercontent.com/pyenv-win/p… -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
直接执行该命令可能会出现错误。我们可以使用下面的方法:
- 进入
[https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1](https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1")
,将名为install-pyenv-win.ps1
的文件下载至电脑某目录(如D:pyenv
) - 将脚本文件下载完成后,在终端(
PowerShell
) 中,使用cd命令切换到保存该脚本文件的目录,然后运行以下命令来执行脚本
./install-pyenv-win.ps1
- 执行完成后,运行下面的命令确认是否安装成功:
pyenv --version
显示以下画面,说明安装成功:
方法二
git clone https://github.com/pyenv-win/pyenv-win.git
# 或者直接下载
https://github.com/pyenv-win/pyenv-win/archive/refs/heads/master.zip
路径可自定义。例如 D:pyenv.pyenv
配置环境变量
使用方法二安装时,需要我们自行配置环境变量。
把pyenv
添加到系统的环境变量
- 建立环境变量名:PYENV,变量值为
D:pyenv.pyenvpyenv-win
- 添加以下两项至
Path
:
-
- %PYENV%bin
- %PYENV%shims
- 设置好之后,测试pyenv是否安装并配置成功
需要将当前终端关闭并重新打开再进行测试
使用前准备工作
设置下载镜像
由于默认的pyenv使用的下载镜像(mirror)下载时很容易超时导致下载失败或下载很慢。
为了解决这个问题,这里我们更换一个更快的下载镜像。
修改pyenv-winlibexeclibs
目录下(特别提示,对早期pyenv-win是在pyenv-winlibexec目录下)的pyenv-install-lib.vbs
文件中的镜像配置mirror="https://www.python.org/ftp/python"
修改为
mirror="https://npm.taobao.org/mirrors/python/"
,令其在下载Python版本时默认从淘宝镜像中下载。
常用命令
查看可安装的Python的版本列表
pyenv install --list
# 或
pyenv install --l
pyenv install
--安装Python
查看可安装的版本后,接着可以输入pyenv install
来下载需要的Python版本。例如想要下载3.8.10版本的话可以输入:
pyenv install 3.8.10
pyenv global
--设置全局的Python版本
- 我们可以通过输入
pyenv global 3.8.10
设置全局的Python版本为3.8.10 - 设置后输入
pyenv global
确认当前设置的Python版本是否为3.8.10 - 另外在设置全局Python版本后,
D:/pyenv/.pyenv/pyenv-win
目录下有一个名为verision
的文件,打开它就可以查看全局的Python版本
pyenv local
--设置当前目录下的Python版本
- 如果使用Python开发项目(比如Django),这时因为项目使用的库版本各不相同,这时我们要在单个项目中使用特定的Python版本进行开发,这个命令实现的效果是类似于
venv
的功能。 - 我们可以输入
pyenv local 3.8.10
设置当前目录下所有Python文件使用的Python版本。 - 与查看全局版本类似,我们同样可以输入
pyenv local
确认当前设置的Python版本;也可以在当前目录下找到一个生成的.python-version
文件来查看当前版本
pyenv versions
--显示已经安装的Python版本
通过输入pyenv versions
可以输出已经下载的所有Python环境:
$ pyenv versions
3.10.10
* 3.8.10 (set by D:cerelise-workspacecoursedrf-chat-courseserver.python-version)
pyenv version
会显示当前local
或global
所使用的Python版本,括号内容为Python的来源位置;- 若输入
pyenv version
则只会显示当前使用的Python版本,而且本地会优先于全局版本。
pyenv uninstall
--解除安装指定的Python版本
假设要删除Python3.8.10的话,只需要输入pyenv uninstall 3.8.10
,pyenv就会删除D:/pyenv/.pyenv/pyenv-win/versions/3.8.10
配置pip国内镜像
国内常用镜像
- 清华:pypi.tuna.tsinghua.edu.cn/simple
- 阿里云:mirrors.aliyun.com/pypi/simple…
- 中国科技大学 pypi.mirrors.ustc.edu.cn/simple/
- 华中理工大学:pypi.hustunique.com/
- 山东理工大学:pypi.sdutlinux.org/
- 豆瓣:pypi.douban.com/simple/
配置
# 全局范围内设置 pip 的镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 只想对当前用户设置镜像源
pip config set index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 临时安装时配置
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名
在不同的Python版本下,切换为国内镜像源都需要更新一次,不同Python版本下的pip并不一致。
常见问题
如果我要使用pyenv
,但是本地有已经安装好的Python怎么办?
-
安装pyenv后,如果本机上有Python环境的话,无论怎么切换版本,系统都是默认使用本机上使用安装包安装的Python环境版本;
-
如何解决这个问题?
- 卸载当前的Python环境;
- 在Path配置中删除本机Python的环境变量。
-
以上两项完成后,重新打开终端,切换版本就可以了。