我按照这里的说明进行操作:在 Anaconda Navigator 上找不到软件包。下一步该怎么做?
我在 Anaconda 导航器上单击了从环境中打开终端,然后在终端中使用了"pip3 install lmfit"。但是使用 pip3 安装 lmfit 包后,我仍然无法在 conda 列表中找到它。我该怎么办?
问题
在回答这个问题时,pip
的 Conda 构建才刚刚开始包含一个pip3
入口点,1因此pip3
很可能指的是非 Conda 版本的 Python,这就是安装包的地方。尝试检查which pip3
以了解它的去向。
建议
康达第一
通常,最好使用 Conda 在 Conda 环境中安装软件包,在这种情况下,软件包可通过 Conda Forge 通道获得:
conda install -c conda-forge lmfit
与 M. Newville 的回答相反,这个首选 Conda 包的建议并不是为了让 Conda 开发人员受益,而是一种经验法则,以帮助用户避免创建不稳定或不可重现的环境。有关混合pip install
和conda install
风险的更多信息,请参阅帖子">在Conda环境中使用Pip"。
尽管如此,并非所有软件包(特别是lmfit
(都在默认存储库中找到的评论,并且由于需要求助于第三方渠道而使安装复杂化,这是一个很好的观点。事实上,由于第三方可以自由使用不同的构建堆栈,因此混合 Anaconda 构建的包和 Conda Forge 构建的包存在已知问题。但是,这些问题往往很少见,并且仅限于编译的代码。此外,将受信任通道添加到配置并设置通道优先级可以启发式地解决此问题。
至于使用第三方渠道的风险,任意的 Anaconda Cloud 用户渠道是有风险的:应该只从您信任的渠道获取软件包(就像安装的任何其他频道一样(。特别是Conda Forge享有盛誉,所有原料都可以在GitHub上免费获得。此外,Conda Forge 上的许多 Python 包构建只是包的 PyPI 构建的包装器。
PyPI 最后
有时无法避免使用 PyPI。当必须求助于从 PyPI 安装时,最好从激活环境中使用pip
入口点,而不是pip3
,因为只有一些 Conda 版本的pip
包含pip3
。例如
conda activate my_env
pip install lmfit
同样,按照">在 Conda 环境中使用 Pip"中的建议,应该假设任何后续对环境中conda (install|upgrade|remove)
的调用都可能具有未定义的行为。
仅>PyPI为了完整起见,我将指出,与建议一致的使用 Conda 的稳定方法是将 Conda 限制为所有软件包安装的环境创建和使用pip
的角色。
对于仅使用 Python 的用户来说,这种策略可能是负担最小的,他们不想处理诸如查找 Conda 等效包名称或搜索非默认通道之类的事情。但是,它的适用性似乎仅限于仅限 Python 的环境,因为其他库可能仍然需要求助于conda install
.
[1]:Conda Forge 和 Anaconda 在 20.2 版本之后开始为pip
模块添加pip3
入口点。
安装一个纯 Python 包,例如使用正确版本的pip install lmfit
lmfit
应该没问题。
建议Conda first
使conda
维护者和打包者的生活更轻松,而不是用户的生活。 FWIW,我维护这两种包, 而且没有理由推荐conda install lmfit
而不是pip install lmfit
.
实际上,lmfit
不在默认的 anaconda 存储库中,因此安装它需要转到第三方 conda 频道,例如conda-forge
. 这增加了 conda 环境的复杂性和风险。
真的,pip install lmfit
应该没问题。