【问题标题】:How to move installed packages to a newly created virtual environment ?如何将已安装的软件包移动到新创建的虚拟环境?
【发布时间】:2018-12-22 16:49:06
【问题描述】:

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

【问题讨论】:

  • 为什么不使用“no global”选项创建一个新的 venv,pip install 已经存在于您以前本地的内容,然后运行您的代码。调整错误,而不是预先分析。顺便说一句,这就是一套好的自动化测试派上用场的地方。

标签: python virtual-environment


【解决方案1】:

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

但是,这很容易解决。无需移动/复制,只需在新位置创建新环境即可。创建虚拟环境。这种方式对我有用,或者您可以查看以下链接:

pip install virtualenv
virtualenv NameOfYourVirtualEnvironment
virtualenv NameOfYourVirtualEnvironment/bin/activate

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

来源: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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2011-12-25
      相关资源
      最近更新 更多