python确实是一门比较神奇的语言,简单易学而功能强大。但是自从python3发布以来,就出现了了个问题,那就是版本之间的问题。2和3之间不兼容,所以,许多时候,电脑上往往共存多个版本,而且有的时候,还要各自使用。下面就我自己在windows和ubuntu上的实践,来提出一些解决办法,多指正!
1. 在windows上
需求来源于我使用的python版本本来是python3.6,但是在学习kivy在windows打包的时候,pyinstaller仅仅只兼容于python3.5,所以,只能够用3.5来打包,3.6来开发。
假设python3.5安装在D:\python3.5里面,python3.6安装在D:\python3.6里,他们的目录下都有个可执行程序python.exe,就是执行脚本的命令了。
method 1
我可克直接进入D:\python3.5下执行
python.exe --version
直接进入D:\python3.6下执行
python.exe --version
就是执行相应的python 的版本了;
如果我想要pip,安装不同的库在不同版本下,那么,在各自的目录下如此执行即可
python.exe -m pip install --upgrade pyinstaller
method 2
直接进入目录执行比较麻烦,那么,可以配置环境变量,但是配置了,执行python命令,只能指向一个版本,怎么破呢?
实际上哇,执行的python,就是执行python.exe。
所以,改名字,把python3.5的python.exe的改成python5.exe,把python3.6的python.exe改成python6.exe,然后,将他们两个所在目录分别加到环境变量里面去。
之后,执行
python5 --version
python5 -m pip install pymysql
就是3.5版本,
执行
python6 --version
python6 -m pip install pymysql
就是3.6版本的了。
2.在ubuntu上
linux上有默认的版本是2.7,要安装个python3,直接可以
sudo apt-get install python3
然后输入python --version还是python2版本的,这里,我使用的是全局的alias,由于ubutnu里面执行python,也是执行二进制文件,也可以路径执行的,比如:
/usr/local/bin/python3
所以,找准路径,修改
vim /etc/bash.bashrc
在最底部加:
alias python3 = /usr/local/bin/python3
之后退出保存,在执行
source /etc/bash_bashrc
就可以了,当然,这个方法一般,网上看见有修改环境变量的,还没有研究
补充于20170929:
后来发现有个神器更加好用:
virtualenv 大家可以研究下,实际很简单,只要安装了virtualenv(以python2的pip安装的,当然python3的pip安装也行),然后,假设:
python2安装的目录是D:\python2_install
python3的安装目录是D:\python3_install
python2的项目目录是D:\python2_project
python3的项目目录是D:\python3_project
只要执行命令:
virtualenv -p D:\python2_install\python D:\python2_project\ENV
virtualenv -p D:\python3_install\python D:\python3_project\ENV
//ENV就是项目对应的虚拟环境了
要执行哪个环境,直接运行:
ENV/Scripts/activate
就ok了,查看区别很简单,就看看pip的目录就好了
pip --version
如果要取消,就执行命令:
ENV\Script\deactive
补充于20180711:
要理解,python在linux上是以为文件的形式存在,可执行的python,是一个二进制的文件,大部分的自动安装的Python二进制文件的目录是:
cd /usr/bin
会发现,目录下可能会有许多版本的python的二进制文件,如,python2,python2.7,python3,python3.6,我们命令所执行的python,是这个目录下的名为python的一个软连接,而且,执行 ls -l | grep python 可以发现,它是由python2.7连接过来的软连接,所以,所用那个版本的python,直接删除原来的软连接python,然后重新创建一个指向目标版本的python的软连接就行了,命令如下:
rm /usr/bin/python
ln -s /usr/bin/python3.6 /usr/bin/python
如此,再执行
python -V
就发现,是3.6版本的python了。