如何在虚拟环境中安装 python 个软件包而无需再次下载?

How to install python packages in a virtual environment without downloading them again?

在 VE 中安装一些包时,conda 或 pip 再次下载它们是一件非常麻烦的事情,即使我已经在我的基础环境中安装了它。由于我的互联网带宽有限,而且我假设我会使用许多不同的 VE,因此下载 OpenCV/Tensorflow.

等基本软件包将花费很多时间

默认情况下,pip caches anything it downloads, and will used the cached version whenever possible. This cache is 。因此,除非您通过 --no-cache-dir 选项,否则 pip 下载包意味着它之前没有下载该包的兼容版本。如果您已经在您的基本环境或其他虚拟环境中安装了该软件包并且它仍然下载它,这可能意味着以下一项或多项为真:

  • 您使用 pip 以外的方法安装了现有版本。
  • 有更新的版本可用,但您没有指定,例如 pip install pandas=1.1.5(如果这是您在别处已有的版本)。 Pip 将为您的环境安装最新的兼容版本,除非您另有说明。
  • 您要安装的 VE 是一个不同的 Python 版本(例如,使用 Pyenv 创建),需要不同的构建。

我不太熟悉 conda 的细节,而且我似乎无法在其在线文档中找到任何关注默认缓存行为的内容。但是,modifying the cache location 的操作方法似乎假定默认行为类似于 pip 的工作方式。也许其他有更多 Anaconda 经验的人也可以插话。

因此,除了上述注意事项外,只要您使用与上次相同的方法安装软件包,就不必下载任何东西。

如果你想简化在另一个环境中已有的新 VE 中安装所有相同包(通过 pip 安装)的过程,pip 也可以自动完成。 运行 pip freeze > requirements.txt 在第一个环境中,将生成的文件复制到你新建的VE中。在那里,运行 pip install -r requirements.txt 和 pip 将安装在第一个环境中(通过 pip)安装的所有包。 (请注意,pip freeze 也会记录版本号,因此这不会安装可用的较新版本——这是好事还是坏事取决于您的需要。)