【问题标题】:How to install python packages in a virtual environment without downloading them again?如何在虚拟环境中安装python包而无需再次下载?
【发布时间】:2020-12-28 14:33:47
【问题描述】:

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

【问题讨论】:

    标签: python pip anaconda virtual-environment


    【解决方案1】:

    默认情况下,pip caches 它下载的任何内容,并将尽可能使用缓存版本。这个缓存是shared between your base environment and all virtual environments。因此,除非您通过 --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 也会记录版本号,因此这不会安装可能可用的较新版本——这是好事还是坏事取决于您的需求。)

    【讨论】:

    • 非常感谢!我有最后一个问题,在 conda 缓存文件夹配置中,我假设我提供了一个我选择的目录,对吗?但是,我将无法直接安装与 conda 捆绑在一起的软件包,并且必须自己至少安装一次?
    • 实际上,我似乎误读了我链接的 Anaconda 页面。 (我已经编辑了我的答案。)据我所知,conda install 似乎与pip install 所做的基本相同,因为它会缓存下载的所有内容,并在可能的情况下从缓存中重用。我不是 100% 肯定它在环境之间共享,但它肯定似乎是隐含的。
    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2018-09-26
    • 2018-04-19
    • 2018-02-20
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多