【问题标题】:Install a newer Python when there are installed packages linked against the old one当有已安装的包链接到旧的 Python 时,安装更新的 Python
【发布时间】:2017-10-23 23:37:42
【问题描述】:

(请耐心等待我的描述,这是一个相当长的故障排除之旅。)

我的最终目标是让 python 包 graph_tool 在我的系统上运行,如果可能的话也在 ipynb 上运行。我已经有brew install graph-toolas indicated here,但还是不够。

所以我关注conda instructions here,并尝试满足所有要求,包括拥有cgalpython3.6。我最初有 python2.7 和 python3.5 的 anaconda,但由于 python3.6 是必需的,我下载了带有 python3.6 的 anaconda3。 (conda update python 仍然给我 3.5)

我删除 /Users/mymacbook/anaconda,以便 /Users/mymacbook/anaconda3 成为默认搜索目录。我有一个小成功!

$ python3
Python 3.6.2 |Anaconda, Inc.| (default, Sep 21 2017, 18:29:43) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

不幸的是,当我继续conda install 所需的其他软件包(boost、cgal 等)时,我的 python3 恢复到 3.5 :(

$ python3
Python 3.5.4 |Anaconda custom (x86_64)| (default, Oct  5 2017, 02:58:14)

$ conda install python=3.6
Fetching package metadata ...........
Solving package specifications: .

UnsatisfiableError: The following specifications were found to be in conflict:
  - cgal -> python 3.5*
  - python 3.6*
Use "conda info <package>" to see the dependencies for each package.

$ conda info cgal
Fetching package metadata ...........

ResolvePackageNotFound: 
  - cgal

很麻烦不是吗...由于 ResolvePackageNotFound,建议卸载 cgal,但就像我提到的,我需要 cgal 和 python3.6

提前感谢您的帮助! (并且请在您的建议中包含适用的命令行 - 我是初学者)

【问题讨论】:

    标签: python python-3.x conda


    【解决方案1】:

    寻找软件包当您执行 conda create ..conda install ... 甚至是 conda search 时,它只会显示与您的操作系统一致的结果,在某些情况下,会显示与基本 python 版本一致的结果.

    什么是真正可用的 您可以直接转到Anaconda.org 并搜索您的包裹。这将在“官方”anaconda 分发包以外的渠道上构建。但是,在查看此处时,您必须手动查看可用的文件,因为有些文件可能不是为您的操作系统构建的。

    查看conda info 的结果以查看您当前的频道。看起来“conda-forge”频道可能有你想要的东西。

    conda create -n tamtams_project ipython cgal --channel conda-forge
    

    当我偏离默认频道时,我更喜欢知道包裹来自哪里。您始终可以通过使用以下命令添加到 .condarc 文件来查看该信息:

    conda config --set show_channel_urls True
    

    上面的创建将显示几乎所有的包都是 conda-forge 包,因为命令行通道成为首选通道。

    因此,一个次要的偏好可能是使用:

    conda create -n tamtams_project ipython cgal -c defaults -c conda-forge 
    

    然后您会看到大多数软件包是默认软件包,其中两个来自 conda-forge。

    【讨论】:

    • 您好菲尔,感谢您的回复!频道信息很有帮助,但不适用于解决我的问题。不过谢谢!
    • 好的,但是没有帮助。我给了你一个频道,里面有你正在寻找的兼容包。你试过上面的最后一个命令了吗?
    【解决方案2】:

    您安装的 cgal 副本是为 Python 3.5 编译的。如果您查看 https://anaconda.org/conda-forge/cgal/files ,每个 Python 次要版本都有一个单独的包。

    Managing Python — Conda documentation 推荐任一

    • 如果您不想替换现有安装,请将新的 Python 安装到新环境,或者
    • update'ing 它(如果需要,连同其他包一起)如果您确实想替换当前的包

    当然,您也可以卸载所有特定于版本的包,安装新的 Python,然后重新安装包 - 但这需要更多的工作。

    【讨论】:

    • 感谢您的回答!根据您的建议,我 conda create -n py36env python=3.6 anacondaconda install -c conda-forge cgal 解决了原来的问题 - 所以谢谢!
    • 不幸的是,我在编译时遇到了相关问题。你介意看看吗? stackoverflow.com/questions/46912969/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多