我在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而无需从头开始重新安装所有内容。
答案 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
但这不一定有效:
所以你最好的选择是pip freeze
并从该文件重新安装。