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

如何在虚拟环境中安装python软件包而无需再次下载?,python,pip,anaconda,virtual-environment,Python,Pip,Anaconda,Virtual Environment,在VE中安装一些软件包是一件非常麻烦的事情,即使我的基本环境中已经有了这些软件包,conda或pip也会再次下载它们。由于我的互联网带宽有限,并且我假设我将使用许多不同的VE,下载基本软件包(如OpenCV/Tensorflow)将花费大量时间。默认情况下,pip将下载任何内容,并尽可能使用缓存版本。这个缓存是。因此,除非您传递--no cache dir选项,否则pip下载包意味着它以前没有下载过该包的兼容版本。如果您已经在基本环境或其他虚拟环境中安装了该软件包,并且该软件包仍在下载,则这可能

在VE中安装一些软件包是一件非常麻烦的事情,即使我的基本环境中已经有了这些软件包,conda或pip也会再次下载它们。由于我的互联网带宽有限,并且我假设我将使用许多不同的VE,下载基本软件包(如OpenCV/Tensorflow)将花费大量时间。

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

  • 您使用pip以外的方法安装了现有版本
  • 有一个更新的版本可用,您没有指定,例如,
    pip install pandas=1.1.5
    (如果这是您在其他地方已有的版本)。Pip将为您的环境安装最新的兼容版本,除非您另有说明
  • 您要安装到的VE是不同的Python版本(例如,使用创建),需要不同的版本
我对conda的细节不太熟悉,在它的在线文档中似乎找不到任何关注默认缓存行为的内容。然而,how-to-for似乎假设默认行为与pip的工作方式类似。也许其他有更多水蟒经验的人也可以加入进来

因此,除了上面的警告之外,只要您使用上次使用的相同方法安装软件包,就不必下载任何内容


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

非常感谢!我还有最后一个问题,在conda cache文件夹配置中,我假设我给出了一个我选择的目录,对吗?但是我将无法直接安装与conda捆绑的软件包,并且必须自己至少安装一次?事实上,我似乎误读了我链接的Anaconda页面。(我已经编辑了我的答案。)据我所知,
conda install
似乎做了与
pip install
基本相同的事情,因为它缓存下载的所有内容,并在可能的情况下从缓存中重用。我不是100%肯定它是在不同的环境中共享的,但它似乎确实是隐含的。