一个月前重装了电脑,装了个Python,版本已经是3.6.0。昨天装了个pyinstaller库打包Python应用的时候,发现这个库只支持到3.5.X,于是就有了在一个系统上安装多个Python版本的需求,Python 2在使用上和Python 3差异还是相当大的,所以本文探讨的也就是Windows下多个Python 3版本的共存方案。理想的效果是能在控制台中指定使用的是哪个Python版本以及指定pip工具对哪个Python版本生效,互不干扰。
下载安装
这步没什么好说明的,为了在控制台中使用Python和pip,你还是需要在安装的时候选择添加到path路径,以及安装pip工具。我这次装了个x86的Python 3.5.3,所以安装好后我的path是这样的:
这时你在控制台输入
python --version
,提示的Python版本是3.6.0。因为控制台在path变量的路径中从前到后搜索python程序,首先搜索到的就是Python 3.6.0。
创建快捷方式
假设你默认使用的Python版本就是python 3.6.0,那么在path变量里Python 3.6的目录就要在3.5的前面。然后为了在命令行中使用Python 3.5,你需要进入Python 3.5所在的目录,在当前文件夹下创建python.exe的快捷方式,并将其更名为python35。
此时在控制台中输入python35
,会提示:
'python35' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
那是因为快捷方式,会有.lnk后缀,此后缀并没有在控制台的搜索范围中。尝试在控制台中输入python35.lnk
,可以发现打开的Python版本就是Python 3.5了。但是更为优雅的解决方案是在环境变量的PATHEXT变量后加入;.lnk
就能搜索到.lnk后缀的命令了。
此外,另一种更简单的解决方案是复制python.exe文件,并更名为python35.exe,我没做尝试,理论上应该也行。
使用指定的pip
pip的路径在python安装目录下的./Scripts
目录。所以确保你的环境变量path包含了两个Python版本的Scripts文件夹。理论上在安装时选择正确的安装选项就会自动添加相应地Scripts文件夹。
打开一个Scripts文件夹,发现其实是有三个pip命令的,如图所示:
也就是说,在只安装了一个python版本的情况下,比如说Python 3.6.0,在控制台中 pip、pip3、pip3.6是等价的。在同时安装Python3.5和Python3.6的情况下,pip和pip3会重复,系统默认选择path中靠前的pip,但是可以通过pip3.6和pip3.5做区分。如:
pip3.5 install PyQt5
此命令即在python3.5下安装PyQt5模块。