如何在虚拟环境中安装python包而不需要再次下载



在VE中安装一些软件包时会遇到很大的麻烦,即使我的基本环境中已经有了conda或pip,也会再次下载它们。由于我的互联网带宽有限,我想我会使用许多不同的VE,所以下载OpenCV/Tensorflow等基本软件包需要很多时间。

默认情况下,pip缓存它下载的任何内容,并将尽可能使用缓存的版本。此缓存在基本环境和所有虚拟环境之间共享。因此,除非您通过--no-cache-dir选项,否则pip下载包意味着它以前没有下载该包的兼容版本。如果你已经在你的基本环境或另一个虚拟环境中安装了该软件包,并且它无论如何都会下载它,这可能意味着以下一个或多个是正确的:

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

我对conda的细节不太熟悉,在它的在线文档中似乎找不到任何关注默认缓存行为的内容。然而,修改缓存位置的方法似乎假设默认行为与pip的工作方式类似。也许其他有更多蟒蛇经验的人也可以加入进来。

因此,除了上面的注意事项外,只要你用上次相同的方法安装软件包,你就不应该下载任何东西。

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

相关内容

最新更新