python virtualenv使用小结

使用场景

一般使用python安装第三方包时,都会统一安装在用户目录下的site-packages里面。比如我的包会安装在:/home/cer/anaconda2/envs/py36/lib/python3.6/site-packages

但当你开发一个项目时,你可能需要指定的第三方包的的某个版本;或者你的项目需要经常迁移、部署

这个时候你可以选择将依赖都写在requirements.txt里面,使用pip install -r requirements.txt随用随装。

但如果你的部署环境下有很多python项目,你不希望将其他项目的依赖包的版本发生变化;或者你的部署环境不能随意连接外网,或者其他场景你需要带着你本地的环境到部署环境,你可以使用virtualenv,将第三方包装在项目路径下,跟着你的项目一起旅行

安装

1
pip install virtualenv

使用

先创建一个测试的项目路径:

1
2
mkdir test_project
cd test_project/

创建一个独立的运行环境,名字叫venv

1
virtualenv --no-site-packages venv
1
2
3
4
Using base prefix '/home/cer/anaconda2/envs/py36'
New python executable in /home/cer/Project/notebooks/python/venv/bin/python
Installing setuptools, pip, wheel...
done.

可以看到多了一个venv目录,里面已经装了python3.6,且没有带site-packages里面已经装好的包。

还有一个常用的参数是-p python3.6可以指定python的版本。

1
ls -l venv
1
2
3
4
total 12
drwxrwxr-x 2 cer cer 4096 1月 5 14:33 bin
drwxrwxr-x 2 cer cer 4096 1月 5 14:33 include
drwxrwxr-x 3 cer cer 4096 1月 5 14:33 lib

使用venv里的环境:

1
source ./venv/bin/activate

然后就可以使用pip在里面装你想要的东西。
如果想退出虚拟环境,只需:

1
deactivate