pyenv-win venv配置详解:轻松切换不同Python版本与虚拟环境
问题描述
使用anaconda可以对不同的python版本和多个虚拟环境进行管理,但是公司没有购买anaconda,所以在公司电脑上无法使用,需要使用一些替代的方法来实现不同python版本和多个虚拟环境的管理。
问题解决
方案概述
在windows系统上,使用pyenv-win配置不同版本的python,然后使用python自带的venv功能创建彼此隔离的虚拟环境。
一、准备工作
1.安装pyenv-win
找到pyenv-win的GitHub网址,README上介绍了多种安装方式,我这里使用Git指令安装,因为这种方式方便使用git pull指令进行软件的更新:
打开Git Bash,输入以下命令
git clone https://github.com/pyenv-win/pyenv-win.git "$HOME\.pyenv"
这个命令会将pyenv-win安装在C:\Users\user\.pyenv
文件夹,其中user
是你的用户名,如果需要安装到别的文件夹,将$HOME\.pyenv
更改为你需要的路径即可。
2.系统设置
这一步包括设置系统变量和添加用户路径,可参考官方文档进行。
- 首先设置系统变量,打开PowerShell,输入如下命令:
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
注意,如果你的安装路径不是上述的默认安装路径,那么需要将$env:USERPROFILE + "\.pyenv\pyenv-win\"
改成你的安装路径。
- 然后添加用户路径,这一步可以让我们在PowerShell中使用pyenv相关命令,打开PowerShell,输入如下命令:
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
同样的,如果安装路径不是默认安装路径,需要对$env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;"
进行修改。
3.验证
然后重新打开PowerShell,运行
pyenv --version
指令查看是否安装成功并成功添加用户路径。
如果成功,那么会显示pyenv的版本:
二、创建某个版本的python
1.查找支持的python版本
打开PowerShell,输入
pyenv install -l
可以查看软件支持安装的python版本。比如我这里支持3.11.9版本:
2.安装python
在PowerShell输入
pyenv install 3.11.9
然后等待进行下载安装(这一步可能需要科学上网,否则可能下载不成功):
3.查看已安装的python版本
在PowerShell中输入
pyenv versions
即可查看已安装的python版本(我这里是安装了两个版本的python):
三、创建虚拟环境
1.创建文件夹并设置python版本
注意:使用python自带的venv创建虚拟环境与使用anaconda创建虚拟环境不同:使用anaconda创建虚拟环境时,虚拟环境的存储路径是anaconda自动帮你设好的,而使用venv创建虚拟环境时,虚拟环境的存储路径需要自己设置。
所以,我在C:\Users\user
下创建了一个名为.venvs
的文件夹,在这个文件夹中打开PowerShell,然后输入
pyenv shell 3.11.9
即将当前终端的python版本设置为3.11.9(除此之外也可以使用pyenv local 3.11.9
或者pyenv global 3.11.9
来设置local或者global的python版本),这样就表示后续的虚拟环境是基于python的3.11.9版本创建的:
上图在输入
python --version
后显示设置成功。
2.创建并激活虚拟环境
在PowerShell中输入如下语句来创建虚拟环境,其中python -m venv
是固定语句,robotvenv
是我的虚拟环境名称:
python -m venv robotvenv
然后会在C:\Users\user\.venvs
中发现一个新的名为robotvenv
的文件夹。然后在PowerShell中输入如下语句来激活虚拟环境
robotvenv\Scripts\Activate
3.安装需要的python包
然后即可使用pip指令安装需要的包,例如:
pip install numpy
pip install scipy
pip install pandas
pip install matplotlib
四、使用虚拟环境
在配置完成之后,我这里使用的是vscode,打开某个.py文件,然后点击右下角选择python解释器,即可发现我们刚刚创建的虚拟环境,如下图所示:
然后就可以正常使用了。
问题说明
关于创建多个虚拟环境,其实我还试过两种方法:
一种是使用pyenv-win-venv,但是这种方法创建的虚拟环境vscode无法识别也无法使用,在pyenv-win-venv GitHub的issue页面,有人提出了这个问题,但是目前还没有人解答。
另一种是使用pyenv-virtualenv,但是我将其下载之后,无法使用,猜测原因是pyenv-virtualenv貌似只支持linux和macos系统,不支持windows系统。
参考资料
- pyenv-win GitHub 网页
- 使用Git指令安装pyenv-win
- 设置pyenv-win相关系统变量
作者:EstrangedZ