【发布时间】:2020-12-28 14:33:47
【问题描述】:
在 VE 中安装一些软件包时,即使我已经在我的基础环境中安装了 conda 或 pip 再次下载它们,也很麻烦。由于我的互联网带宽有限,并且我假设我将使用许多不同的 VE,因此下载 OpenCV/Tensorflow 等基本包将花费大量时间。
【问题讨论】:
标签: python pip anaconda virtual-environment
在 VE 中安装一些软件包时,即使我已经在我的基础环境中安装了 conda 或 pip 再次下载它们,也很麻烦。由于我的互联网带宽有限,并且我假设我将使用许多不同的 VE,因此下载 OpenCV/Tensorflow 等基本包将花费大量时间。
【问题讨论】:
标签: python pip anaconda virtual-environment
默认情况下,pip caches 它下载的任何内容,并将尽可能使用缓存版本。这个缓存是shared between your base environment and all virtual environments。因此,除非您通过 --no-cache-dir 选项,否则 pip 下载包意味着它以前没有下载该包的兼容版本。如果您已经在基础环境或其他虚拟环境中安装了该软件包,并且无论如何都会下载它,这可能意味着以下一项或多项是正确的:
pip install pandas=1.1.5(如果这是您在其他地方已有的版本)。除非您另有说明,否则 Pip 将为您的环境安装最新的兼容版本。我对 conda 的细节不太熟悉,而且我似乎在其在线文档中找不到任何关注默认缓存行为的内容。但是,modifying the cache location 的操作方法似乎假定默认行为类似于 pip 的工作方式。也许其他有更多 Anaconda 经验的人也可以加入。
因此,除了上述注意事项外,只要您使用与上次相同的方法安装软件包,您就不必下载任何内容。
如果您想简化在另一个环境中已有的新 VE 中安装所有相同软件包(通过 pip 安装)的过程,pip 也可以自动执行此操作。在第一个环境中运行pip freeze > requirements.txt,并将生成的文件复制到新创建的 VE。在那里,运行pip install -r requirements.txt,pip 将安装在第一个环境中(通过 pip)安装的所有包。 (请注意,pip freeze 也会记录版本号,因此这不会安装可能可用的较新版本——这是好事还是坏事取决于您的需求。)
【讨论】:
conda install 似乎与pip install 所做的基本相同,因为它会缓存下载的所有内容,并在可能的情况下从缓存中重用。我不是 100% 肯定它在环境之间共享,但它肯定似乎是隐含的。