2024-04-26 21:44:33 发布
网友
是否可以将python模块从一个virtualenv复制到另一个virtualenv。如果可以,这是如何实现的
通常,您可以将.egg信息从virtualenv的lib/site packages文件夹复制到其他环境的lib/site包中
我正在使用Ubuntu-14.04-64的64位机器上工作。我编译并安装了python-3.4.3到/opt/python3.4/,并基于此python创建了一个vitualenv
mkvirtualenv -p /opt/python3.4/bin/python venv1
此外,为了方便起见:
sudo apt-get install virtualenvwrapper
安装venv并成功使用PyQt5(硬钻头)以及numpy、scipy、ipython等。 我安装了virtualenv克隆:
workon myvenv pip install virtual-clone deactivate
然后跑:
virtualenv-clone venv1 venv2
PyQt5就是这样工作的。命令行提示符仍将venv1命名为活动,但在~/.virtualenv/venv2
cat activate* | grep "venv1"
显示三个文件中的3个条目activate、activate.csh和activate.fish
在激活中,更改
if [ "x(myvenv1) " != x ] ; then PS1="(myvenv1) $PS1" else
到
... PS1="(myvenv2) $PS1" ...
在中激活.csh更改
if ("venv1" != "") then set env_name = "venv1" else
... set env_name = "venv2" ...
在中激活.fish更改
if test -n "(venv1) " printf "%s%s%s" "(venv1) " (set_color normal) (_old_fish_prompt) return end
... printf "%s%s%s" "(venv2) " (set_color normal) (_old_fish_prompt) ...
现在,当您source ~/.virtualenv/venv2/bin/activate或workon venv2时,命令提示符将正确显示您的环境(venv1的克隆副本)
source ~/.virtualenv/venv2/bin/activate
workon venv2
编辑:这并没有回答“如何将模块从一个VirtualNV复制到另一个”的问题,但我很确定在许多情况下,结果都是理想的,即基于先前创建的一个新的venv创建一个新的venv,其中包括(所有)先前安装的模块
只要您在相同的机器上将它们从一个VirtualNV移动到另一个,您就可以轻松地执行以下操作:
$ cp -r [env1]/lib/pythonX.X/site-packages/* [env2]/lib/pythonX.X/site-packages/
但是,如果环境位于不同的机器上,或者使用不同版本的python或其他一些主要差异,那么这可能不是一个好主意。一般来说,生成一个requirements.txt,然后使用它在其他环境中加载所有相同的模块要安全得多。如果愿意,可以手动创建该文件,但只使用pip更容易
requirements.txt
pip
$ pip freeze -E [env1] > requirements.txt
或者,如果您的virtualenv已激活,您只需执行以下操作:
$ pip freeze > requirements.txt
然后,在其他环境中,您可以执行以下操作:
$ pip install -E [env2] -r /path/to/requirements.txt
通常,您可以将.egg信息从virtualenv的lib/site packages文件夹复制到其他环境的lib/site包中
我正在使用Ubuntu-14.04-64的64位机器上工作。我编译并安装了python-3.4.3到/opt/python3.4/,并基于此python创建了一个vitualenv
此外,为了方便起见:
安装venv并成功使用PyQt5(硬钻头)以及numpy、scipy、ipython等。 我安装了virtualenv克隆:
然后跑:
PyQt5就是这样工作的。命令行提示符仍将venv1命名为活动,但在~/.virtualenv/venv2
显示三个文件中的3个条目activate、activate.csh和activate.fish
在激活中,更改
到
在中激活.csh更改
到
在中激活.fish更改
到
现在,当您
source ~/.virtualenv/venv2/bin/activate
或workon venv2
时,命令提示符将正确显示您的环境(venv1的克隆副本)编辑:这并没有回答“如何将模块从一个VirtualNV复制到另一个”的问题,但我很确定在许多情况下,结果都是理想的,即基于先前创建的一个新的venv创建一个新的venv,其中包括(所有)先前安装的模块
只要您在相同的机器上将它们从一个VirtualNV移动到另一个,您就可以轻松地执行以下操作:
但是,如果环境位于不同的机器上,或者使用不同版本的python或其他一些主要差异,那么这可能不是一个好主意。一般来说,生成一个
requirements.txt
,然后使用它在其他环境中加载所有相同的模块要安全得多。如果愿意,可以手动创建该文件,但只使用pip
更容易或者,如果您的virtualenv已激活,您只需执行以下操作:
然后,在其他环境中,您可以执行以下操作:
相关问题 更多 >
编程相关推荐