python中用于创建和管理虚拟环境的包是venv,在终端中执行下面命令会在当前路径下创建名字为new_dir的与python版本相同的虚拟环境,如果系统中有多个python版本,应当按需指定。所创建的虚拟环境new_dir只包含原生python库,不包含python路径下安装的依赖包。
$ python -m venv new_dir
$ python3 -m venv new_dir
执行下面命令将激活虚拟环境new_dir,
source new_dir/bin/activate
终端中的提示符前面将出现 (new_dir)的字样,例如,
$ source new_dir/bin/activate
(new_dir)$ python
>>> import sys
>>> sys.path
>>>
在此环境中,使用pip安装依赖包只对当前环境做出修改。
(new_dir)$ pip install numpy
被创建的虚拟环境new_dir只包含原生python库,然而我们想要创建一个拥有与原python相同的依赖包的环境,有2种实现方式:使用pip重新安装依赖包以及使用virtualenv-clone复制虚拟环境。
- 使用pip重新安装依赖包:
pip freeze 导出原python的依赖包信息 requirement.txt,然后在new_dir环境中重新安装,或者对requirement.txt中包的版本号做修改后再重新安装。这种方式会重新下载依赖包,占用了网络带宽。
$ pip freeze > requirements.txt
$ cat requirements.txt
scikit-learn==0.21.3
scipy==1.3.1
scs==2.1.1.post2
simplejson==3.17.0
six==1.12.0
sympy==1.5.1
$ source new_dir/bin/activate
(new_dir)$ pip install -r requirements.txt
$...
- 使用virtualenv-clone复制虚拟环境
virtualenv-clone是一个python包,virtualenv-clone dir1 new_dir2,表示复制虚拟环境dir1来创建new_dir2
$ pip install virtualenv-clone
$ virtualenv-clone dir1 new_dir2
requirements.txt