如何在python中重新创建虚拟环境

时间:2017-03-30 15:55:48

标签: python virtualenv

我在Ubuntu 16.04上安装了virtualenv和virtualenvwrapper 我创建了一个名为env1的环境

$ sudo apt-get install python-pip
$ pip install virtualenv
$ pip install --upgrade pip 
$ pip install virtualenvwrapper
$ export WORKON_HOME=~/Envs
$ mkdir -p $WORKON_HOME
$ source /usr/local/bin/virtualenvwrapper.sh
$ mkvirtualenv env1

进入(env1)后,我安装了多个软件包

(env1) $ pip install numpy
(env1) $ pip install scipy
(env1) $ pip install matplotlib
(env1) $ apt-get install python-tk

我还安装了opencv3(我没有复制因为太长了)

我正在将env1用于特定项目。

现在我想使用相同的包启动另一个项目,但我还想添加其他包。

我创建了env2,我想知道是否可以将env1复制到env2而无需从头开始重新安装所有内容。

2 个答案:

答案 0 :(得分:2)

pip install virtualenvwrapper并使用cpvirtualenv命令

cpvirtualenv ENVNAME [TARGETENVNAME]

http://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html#cpvirtualenv

记得留意警告

Copying virtual environments is not well supported. Each virtualenv has 
path information hard-coded into it, and there may be cases where the copy 
code does not know to update a particular file. Use with caution.

答案 1 :(得分:2)

您最好的选择是:

的virtualenv-1:

pip freeze > requirements.txt 

的virtualenv-2:

pip install -r requirements.txt

假设它们都在同一个系统上并且使用相同的Python,那么只需复制站点包即可:

cp -Rp /environments/virtualenv-1/lib/python2.7/site-packages \
       /environments/virtualenv-2/lib/python2.7/site-packages

但这不一定有效:

  • 某些软件包会将依赖项和其他内容安装到/ bin /或其他地方。大多数人都没有,但很多人都这样做。
  • 如果virtualenvs的python版本不同 - 即使是次要版本 - 可能会破坏使用c扩展名的库。

所以你最好的选择是pip freeze并从该文件重新安装。

相关问题