Python作为程序员的周末语言平时用的比较多,经常会碰到个问题,就是怎么解决不同环境下项目依赖的问题,而且python也存在2.x和3.x各种不兼容的情况,所以用虚拟环境venv可以仅维护项目依赖的模块,使得各自应用有自己独立的环境,相互隔离,类似于虚拟机环境,与宿主机和其他虚拟机环境隔离。
Python3.3 以上的版本通过 venv 模块原生支持虚拟环境,可以代替 Python 之前的 virtualenv。
聊完了好处,下面讲讲如何使用。以目前使用的python3.x环境为例。
创建虚拟环境
在工作目录执行如下命令:
$ /opt/soft/python36/bin/python3 -m venv .
执行完后会生成如下文件:
激活虚拟环境
执行一下命令激活虚拟环境
# Linux、mac、Unix
$ source ./bin/activate
# windows cms
C:> xxx/Scripts/activate.bat
# windows powershell
PS C:> xxx/Scripts/Activate.ps1
安装模块,查看环境
激活环境后用pip正常安装包即可,如下图
使用如下命令即可将依赖模块信息导出
$ pip freeze > requirements.txt
环境迁移
如果新环境没有网络的条件下可以使用如下命令直接导入依赖包进项目:
$ pip download -d packages/ -r requirements.txt
然后离线安装:
$ pip install --no-index --find-links=packages/ -r requirements.txt
不过这种方式还是有些弊端,比如python2.x python3.x不兼容问题,还有些模块内部实现是c写的,不同机器可能要重新编译。