2

我已经在我之前创建的虚拟环境(venv1)中安装了一些 python 包(使用 pip,它会自动下载包及其依赖项),现在我需要创建另一个虚拟环境(venv2),其中安装了一个包子集venv1. 但是我怎么能不使用互联网呢?我想出了一些想法,但我不确定它们是否可行:

  • 通过将 venv1 复制到 venv2 并卸载不需要的软件包
  • 通过将 site-package 中的包目录从 venv1 复制到 venv2
  • 通过从 venv1 中一一提取包文件,然后创建文件 setup.py,根据填写并安装在 venv2 中(希望不要,因为它会很乏味并且会引入错误)
  • 也许有一种方法可以从已安装的包中生成鸡蛋或使用任何工具提取它?如何?

那么更好的方法是什么?

谢谢

4

2 回答 2

2

如果除了virtualenv你正在使用virtualenvwrapper(非常推荐),你可以复制一个虚拟环境

cpvirtualenv venv1 venv2

然后你进入你的新环境workon venv2并卸载你不需要的包。

于 2013-10-05T22:55:47.457 回答
0

我想说复制 venv 是最简单的选择。但是,在这种情况下,在创建第一个 venv 时,您需要使用该--relocatable标志:

$ virtualenv --help
...

--relocatable         Make an EXISTING virtualenv environment relocatable.
                      This fixes up scripts and makes all .pth files
                      relative

例如:

$ virtualenv --relocatable venv1
$ venv1/pip/install somepackage
$ cp venv1 venv2

然后你可以cp在venv上使用。

否则,您的 venv 将无法复制/移动,因为它包含绝对路径。

于 2013-10-05T23:01:48.067 回答