如何在虚拟环境中重新安装已安装的python包?
我已经在我之前创建的虚拟环境(venv1)中安装了一些python软件包(使用pip,它会自动下载软件包及其依赖项),现在我需要创建另一个虚拟环境(venv2),并在venv1中安装软件包的子集。但我怎么能不使用互联网呢?我想出了一些想法,但我不确定它们是否可行:如何在虚拟环境中重新安装已安装的python包?,python,virtualenv,pip,Python,Virtualenv,Pip,我已经在我之前创建的虚拟环境(venv1)中安装了一些python软件包(使用pip,它会自动下载软件包及其依赖项),现在我需要创建另一个虚拟环境(venv2),并在venv1中安装软件包的子集。但我怎么能不使用互联网呢?我想出了一些想法,但我不确定它们是否可行: 通过将venv1复制到venv2并卸载不需要的软件包 通过将站点包中的包目录从venv1复制到venv2 通过从venv1中逐个提取软件包文件,然后创建文件setup.py,根据填写并在venv2中安装(希望不要,因为这样会很繁琐,
- 通过将venv1复制到venv2并卸载不需要的软件包
- 通过将站点包中的包目录从venv1复制到venv2
- 通过从venv1中逐个提取软件包文件,然后创建文件setup.py,根据填写并在venv2中安装(希望不要,因为这样会很繁琐,并且可能会引入错误)
- 也许有一种方法可以从安装的软件包中生成鸡蛋,或者用任何工具提取鸡蛋?怎么做
谢谢如果除了使用
virtualenv
之外,您还使用了virtualenvwrapper
(非常推荐),您可以使用
cpvirtualenv venv1 venv2
然后使用
workon-venv2
进入新环境,卸载不需要的软件包。我认为复制venv是最简单的选择。但是,在这种情况下,在创建第一个venv时,需要使用--relocate
标志:
$ 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
然后您可以在venv上使用cp
否则,您的venv将不可复制/移动,因为它包含绝对路径。您应该能够只复制
网站包下的内容。
;请确保查看.pth
文件并相应地更改路径。使用--relocatable时遇到一些问题,因此我发现我将测试它。为什么投票失败?