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.系统设置

这一步包括设置系统变量添加用户路径,可参考官方文档进行。

  1. 首先设置系统变量,打开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\"改成你的安装路径。

  1. 然后添加用户路径,这一步可以让我们在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系统。

参考资料

  1. pyenv-win GitHub 网页
  2. 使用Git指令安装pyenv-win
  3. 设置pyenv-win相关系统变量

作者:EstrangedZ

物联沃分享整理
物联沃-IOTWORD物联网 » pyenv-win venv配置详解:轻松切换不同Python版本与虚拟环境

发表回复