如何将已安装的软件包移动到新创建的虚拟环境?

How to move installed packages to a newly created virtual environment ?

我已经下载了很多包到全局环境中(这么说吧)。现在,我想创建一个新的虚拟环境并将一些包移动到该环境中。我该怎么做?

虽然您可以将 files/directories 从全局安装的站点包目录复制到虚拟环境的站点包中,但您可能会遇到问题(丢失文件、二进制文件不匹配或其他)。如果您不熟悉 python 打包机制,请不要这样做。

我建议您 运行 pip freeze 从您的全局安装中获取您安装的列表,然后将该输出作为 requirements.txt 与您的源一起存储,并且将其置于源代码管理之下。然后 运行 pip install -r requirements.txt 激活你的 virtualenv 之后,你会将依赖项(具有相同版本)复制到你的 virtualenv 中。

如果您尝试复制或重命名虚拟环境,您会发现复制的环境不起作用。这是因为虚拟环境与创建它的 Python 及其创建位置密切相关。(“可重定位”选项不起作用。

不过,这很容易修复。而不是 moving/copying,只需在新位置创建一个新环境即可。创建虚拟环境。这种方式对我有用,或者你可以看到下面的 link:

pip install virtualenv
virtualenv NameOfYourVirtualEnvironment
virtualenv NameOfYourVirtualEnvironment/bin/activate

然后,运行 pip freeze > requirements.txt 在旧环境中创建安装在其中的软件包列表,在您的情况下是全局环境。这样,您就可以在新环境中 运行 pip install -r requirements.txt 从保存的列表中安装软件包。当然,你可以在机器之间复制requirements.txt。在许多情况下,它会起作用;有时,您可能需要对 requirements.txt 进行一些修改以删除 OS 特定的内容。

来源:https://chriswarrick.com/blog/2018/09/04/python-virtual-environments/

这也可能对你有用: How to import a globally installed package to virtualenv folder https://gist.github.com/k4ml/4080461