Python 安装包后未解决Conda冲突

Python 安装包后未解决Conda冲突,python,anaconda,conda,Python,Anaconda,Conda,我正在尝试安装一个名为的程序包,它是来自所有者的Conda程序包。该包具有依赖项,当我在其上运行conda install时,会导致此错误(我当前的conda环境运行的是Python 3.7.4): 然后,我再次尝试安装该软件包,并得到了与以前相同的错误。我不明白这是怎么可能的,因为您可以看到我现在已经安装了,例如,zlib,tk,xz。我不确定如何正确解决这些冲突,因为在安装了适当的包/版本后,它似乎没有帮助 谢谢你的帮助 可疑原因 从构建ID判断,您使用的是osx-64平台。对于所有的osx

我正在尝试安装一个名为的程序包,它是来自所有者的Conda程序包。该包具有依赖项,当我在其上运行
conda install
时,会导致此错误(我当前的conda环境运行的是Python 3.7.4):

然后,我再次尝试安装该软件包,并得到了与以前相同的错误。我不明白这是怎么可能的,因为您可以看到我现在已经安装了,例如,
zlib
tk
xz
。我不确定如何正确解决这些冲突,因为在安装了适当的包/版本后,它似乎没有帮助

谢谢你的帮助

可疑原因 从构建ID判断,您使用的是osx-64平台。对于所有的osx-64版本,SymTopo的依赖性要求看起来很奇怪,特别是,它们需要
pymatgen=2019.4.11.*
,而搜索Anaconda Cloud根本不存在。然而,在linux-64版本中,这个要求是
pymatgen>=2019.4.11
,因此我认为作者做得不正确,因此您无法解析一致的包配置


可能的解决办法 除了联系作者并要求他们发布一些工作版本外,我认为您有两种可能的行动方案:

  • 强制安装
  • 使用PyPI构建
  • 不管是哪种方式,都假设生成的env是脆弱的,所以尽量避免在其中进行任何不必要的安装

    强制安装 如果我们假设
    pymatgen=2019.4.11.*
    实际上应该是
    pymatgen>=2019.4.11
    然后您可以安装所有的prereq(请参阅下一节中的YAML),然后使用

    conda install -n my_env --no-deps materiae::symtopo
    
    这可能值得一试,但Conda帮助(
    Conda install-h
    )明确警告说,这样做没有任何保证

    使用PyPI构建 另一种解决方法是,尽管这是一个相对实验性的特性。该战略将是:

  • 创建一个env,将所有必备组件作为Conda和PyPI包的组合安装
  • 仅为此环境启用Pip互操作性
  • 从Conda安装SymTopo
  • 我对此进行了测试,并使用以下YAML作为初始环境定义:

    symtopo预需求yaml

    name: symtopo_env
    channels:
     - conda-forge
     - defaults
    dependencies:
     - python=3.7
     - h5py=2.9.0
     - phonopy=2.1.3
     - pip
     - pip:
       - abipy==0.6.0
       - pymatgen==2019.4.11
    
    命令如下:

    conda env create -f symtopo-prereqs.yaml
    conda activate symtopo_env
    conda config --env --set pip_interop_enabled true
    conda install materiae::symtopo
    
    同样,我认为这个env非常脆弱(),并避免再安装它


    注意,我发现使用推荐频道的
    abipy
    会导致冲突,所以我选择只使用PyPI版本。不幸的是,这导致PyPI提供了很多软件包,但它确实安装了所有软件。

    这太棒了,非常感谢。我得出的结论是,原作者做了一些不正确的事情,由于没有公共GitHub,因此没有地方发布这篇文章。似乎PyPI是迄今为止最可靠的方法,但也会将其发送给作者,希望在将来的更新中进行清理。非常感谢您的帮助,现在就尝试一下!安装效果很好(应用程序的实际稳定性还有待观察,但这会让我启动并运行起来)。谢谢你的帮助@MillerMedia很乐意帮忙!我的另一个想法是,也许那些较旧版本的pymatgen是从Anaconda Cloud中提取出来的,所以这可能不完全是作者的错。这是有道理的。实际上,我将联系他们,看看我是否能帮助他们在技术方面保持这一点,因此这是一个非常有用的起点(我将引导他们找到您的答案,以及上下文)。谢谢
    name: symtopo_env
    channels:
     - conda-forge
     - defaults
    dependencies:
     - python=3.7
     - h5py=2.9.0
     - phonopy=2.1.3
     - pip
     - pip:
       - abipy==0.6.0
       - pymatgen==2019.4.11
    
    conda env create -f symtopo-prereqs.yaml
    conda activate symtopo_env
    conda config --env --set pip_interop_enabled true
    conda install materiae::symtopo