前言
众所周知,目前主流Python仍然是2和3两个分支并行发布的,而在这两版本中,又有不同的迭代版本,虽然说新老版本之间的差别很小,但是其所对应支持的库版本可能不一致,更复杂的是各种库之间的相互依赖关系。这就导致了我们为了满足不同Python项目的要求,不得不在我们的系统中装多个版本的Python,这样一来如何在一个系统上管理多个Python版本,使其不会相互影响就显得十分重要。
使用分支版本区分Python2和Python3
当前在大多数Linux系统上(如Ubuntu),都已经默认安装上了Python2和Python3,为了区分他们,我们在终端使用“python2 xx.py”来执行用Python2写的程序,使用“python3 xx.py”来执行用Python3写的程序。同样我们使用pip2和pip3来区分安装Python2和Python3版本的库。
注意在Ubuntu系统上安装pip3的需要指定版本,安装pip3命令为:
1 | sudo apt-get install python3-pip |
pip2的安装命令为:1
sudo apt-get install python-pip
在Ubuntu上可以同以下命令来查看python的路经:1
which python
在Windows系统安装python时,可能无法使用“python2”和“python3”来区分,因为在bin目录下只有“python.exe”而没有“python2.exe”或者“python3.exe”,所有我们直接手动修改python可执行文件文件明,加入版本号即可。
Windows下使用py.exe
当Windows下同时安装了Python2和Python3时,可以使用在Python3目录下的工具py.exe来执行Python程序。在其后面执行版本号即可调用不同版本的Python。
Python2为:
1 | py -2 xx.py |
Python2为:
1 | py -3 xx.py |
如果你嫌在执行时加入参数麻烦,可以在Python程序的开头加入如下行来指定时调用python2还是python3解释器:
1 | #! python3 |
后面就直接使用py而不用加参数了。
使用conda管理多版本
当我们不只满足区分Python2和3这两个大版本,还要区分跟细的版本如:python3.4,python3.5,以及一些库的版本时,使用上面的方法可能管理就有不方便了,特别是要避免不同版本的库相互影响很困难。这个时候最后使用那些python多版本管理工具。常用的有:
- pyenv
- virtualenv
- conda
这些管理工具实际上都时重新安装独立的Python和需要的库,让将这些环境各自隔离开来,并提供相应的管理和切换和接口命令。
conda是Anaconda提供的管理工具,可以把conda看作是pip + virtualenv + PVM(Python Version Manager) + 一些必要的底层库。由于我安装了Anaconda环境,所以就直接使用它提供的conda。如果不想安装整个Anaconda而只想用conda工具,则可以直接下载其简化版Miniconda。
注意在直接在官方下载地址下载Anaconda时,可能其下载速度十分的缓慢,我们可以选在国内的清华大学 TUNA下载镜像源来下载。
1.创建和删除一个Python环境
使用conda创建一个Python版本的环境命令如下(指定名字为test_env为版本2.7),第二命令为复制其他环境的配置:
1 | conda create -n test_env python=2.7 |
或1
conda create --name test_env --clone root
移除环境命令为:
1 | conda remove -n test_env --all |
2.Python环境切换
进入test_env环境:
1 | source activate test_env |
退出test_env环境:
1 | source test_env |
在Windows上以上命令不需要加source
3.包管理和信息查看
通过conda安装库包,先进入某个环境,然后:
1 | conda install pandas |
或指定环境1
conda install -n env_name pandas
卸载包:
1 | conda remove pandas |
查找包:
1 | conda search pyqtgraph |
查看包信息:
1 | conda list |
显示通过conda已经安装的环境:
1 | conda env list |