关于python多版本共存的问题

2017-08-03  本文已影响0人  某言

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了。

上一篇下一篇

猜你喜欢

热点阅读