virtualenv在Ubuntu16.04(64位)中的用法(命令和图形化建立虚拟环境)

apt-get install python2.7 python2.7-dev

先安装必要的包

apt-get install virtualenv

apt-get install virtualenvwrapper

这两条命令结束后,下面的一律退出root权限,普通user账户下操作即可。

然后

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh(也可以不source,直接另外一个开一个终端即可)

注意,上面这个命令中,source这个文件在不同的Linux系统的位置是不同的,不能照搬,

以上路径仅仅是针对Ubuntu16.04(64位)的


上面的命令如果失败,那么下面的mkvirtualenv将会无法运行,运行下面命令用来创建3.5的虚拟环境,下面命令中的第二个python2.7是虚拟环境对应的文件夹的名字,可以自己换,

第一个python2.7不可以换。(下面的命令必须是上面source成功或者另外开一个终端但是自动生效的前提下)

mkvirtualenv -p /usr/bin/python2.7 python2.7

deactivate

mkvirtualenv -p /usr/bin/python3.5 python3.5

解释器来自/usr/bin/python3.5

安装结束后,终端会变成这样子:
(python3.5) [email protected]:~/.virtualenvs$
前面的(python3.5) 代表已经进入了虚拟环境
输入pip -V得到:
pip 9.0.1 from /home/appleyuchi/.virtualenvs/python3.5/lib/python3.5/site-packages (python 3.5)
然后就可以非root下安装tensorflow了



同样地,先输入命令deactivate,用来离开(python3.5) 这个虚拟环境,
然后用以下命令安装2.7的虚拟环境
mkvirtualenv -p /usr/bin/python2.7 python2.7,同样地,安装结束后,会变成:
(python2.7) [email protected]:~/.virtualenvs$
同样地,输入deactivate可以离开虚拟环境


那么这个时候两个虚拟环境都安装好了,那么,平时刚启动系统进入linux,如何在终端中使用虚拟环境呢?

如果要使用2.7版本的python,那么
cd /home/appleyuchi/.virtualenvs/python2.7/bin
source activate
然后使用pip也好,python也好都是2.7版本的

如果想退出虚拟环境,那么输入deactivate就可以了
好了,现在如果想使用3.5版本的python,那么
cd /home/appleyuchi/.virtualenvs/python3.5/bin
source activate
即可,
然后在终端输入python或者pip -V
会发现都是3.5版本的

退出虚拟环境后,输入python会变成系统默认python,输入pip会报错,command not found,这个是正常的,因为没有进入虚拟环境。


总结:
进入python虚拟环境需要使用source activate文件
需要使用哪种python的虚拟环境就source该虚拟环境的activate文件,
退出虚拟环境需要使用 deactivate命令
每次在终端下安装各种package(可以说他是库,也可以说他是包),先进入虚拟环境,然后再安装,这样就不需要root权限了。
当然,也可以在pycharm中直接安装各种package


效果图:


virtualenv在Ubuntu16.04(64位)中的用法(命令和图形化建立虚拟环境)

virtualenv在Ubuntu16.04(64位)中的用法(命令和图形化建立虚拟环境)




注意事项:

使用douban的pip源,尽量不要使用aliyun的源,有一定几率报错.

尽量确保pip处于最新版本,不然会出现莫名其妙的问题。

另外,可以使用图形化操作,图形化建立虚拟环境,没必要像上面那样敲命令,如下图:

virtualenv在Ubuntu16.04(64位)中的用法(命令和图形化建立虚拟环境)


一些意外情况的处理,例如:
python virtualenv部署到目标机器,在virtualenv虚拟环境下使用python,pip命令依然指向系统命令
也就是说,进入了虚拟环境,用的pip却不是虚拟环境的,仍然是系统的pip
这个在中问的stackflow上似乎没有好的解决方案


我的解决办法是:
(python3.5) [email protected]:~/.virtualenv$ rm -r python3.5
(python3.5) [email protected]:~/.virtualenv$ mkvirtualenv -p /usr/bin/python3.5 python3.5


效果如下:
(python2.7) [email protected]:~/.virtualenvs$ pip -V
pip 9.0.1 from /home/appleyuchi/.virtualenvs/python2.7/local/lib/python2.7/site-packages (python 2.7)
(python2.7) [email protected]:~/.virtualenvs$ deactivate
[email protected]:~/.virtualenvs$ cd python3.5
[email protected]:~/.virtualenvs/python3.5$ cd bin
[email protected]:~/.virtualenvs/python3.5/bin$ source activatge
-bash: activatge: No such file or directory
[email protected]:~/.virtualenvs/python3.5/bin$ source activate
(python3.5) [email protected]:~/.virtualenvs/python3.5/bin$ pip -V
pip 9.0.1 from /home/appleyuchi/.virtualenvs/python3.5/lib/python3.5/site-packages (python 3.5)
(python3.5) [email protected]:~/.virtualenvs/python3.5/bin$