繁体   English   中英

conda环境下独占使用PIP有什么坑?

[英]What are the pitfalls of exclusively using PIP in a CONDA environment?

背景

官方文档和这个 博客在同一个网站——推荐尽可能多的用conda安装requirement然后使用pip。显然这是因为conda不会意识到pip对依赖项所做的任何更改因此将无法解析依赖关系正确。

现在,如果一个人专门使用pip和 go 而没有使用conda安装任何东西,那么期望conda不需要知道pip conda成为隔离依赖项和管理版本的单纯工具。 但是,这违背了官方建议,因为不会使用conda安装尽可能多的要求

所以问题仍然存在:在conda环境中专门使用pip是否有任何已知的缺点?

类似话题

中的类似主题在此处有所涉及,但未涵盖在conda环境中专门使用pip的情况。 我也来过这里:

不确定是否可以对此给出全面的答案,但我想到的一些主要事情是:

  1. 缺乏对非 Python 依赖解析的深度支持 随着时间的推移,越来越多的捆绑非 Python 资源的轮子变得可用,但它远不及 Conda 作为通用 package 管理器而不是特定于 Python 的管理器提供的覆盖范围。 对于任何进行互操作计算(例如, reticulate )的人,我希望 Conda 会受到青睐。

  2. 优化库 有点与第一点相关,但 Anaconda 团队已努力构建优化版本的包(例如,MKL for numpy )。 不确定是否可以通过 PyPI 获得等效项。 1个

  3. 跨环境的浪费冗余 当包和环境位于同一卷上时,Conda 使用硬链接,并支持跨卷的软链接。 这有助于最大限度地减少复制安装在多个环境中的任何包。

  4. 使出口复杂化 导出时 ( conda env export ) Conda 不会选择所有pip安装的包 - 只有来自 PyPI 的包。 也就是说,它会错过从 GitHub 等安装的东西。如果有人做了 go pip-only 路由,我认为更可靠的导出策略是使用pip freeze > requirements.txt ,然后制作一个 YAML 之类的

    channels: - defaults dependencies: - python=3.8 # specify the version - pip - pip: - -r requirements.txt

    用它来重建环境。

综上所述,我可以很容易地想象这些对某些人来说都不重要(大多数都是为了方便),尤其是那些倾向于纯粹在 Python 中工作的人。然而,在这种情况下,我不明白为什么人们不会简单地完全放弃 Conda 并使用特定于 Python 的虚拟环境管理器。


[1]如有不明之处请指正。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM