当已安装的软件包与旧软件包相链接时安装较新的Python

时间:2017-10-23 23:37:42

标签: python python-3.x conda

(请耐心等待我的详细描述,这是一个非常简单的故障排除之旅。)

我的最终目标是让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

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

2 个答案:

答案 0 :(得分:0)

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

Managing Python — Conda documentation建议

  • 如果您不想替换现有安装,请将新Python安装到新环境中,或者
  • update如果你想要替换当前的那个,那么(如果需要的话还有其他包裹)

当然,您可以卸载所有特定于版本的软件包,安装新的Python,然后重新安装软件包 - 但这样做的工作量更大。

答案 1 :(得分:0)

当您执行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。