无法导入PyMC(从conda.binstar安装后未加载gfortran库)

时间:2014-07-20 18:55:46

标签: homebrew anaconda pymc conda

我正在运行Python 2.7.8 :: Anaconda 2.0.1(x86_64)和conda 3.5.5 在Mac OS 10.9.4(Maverick)上

我通过运行

安装了PyMC

conda install -c https://conda.binstar.org/pymc pymc

然而,import pymc给出了一个错误(我在最后复制了Traceback)。

Edit1 :通过阅读这个问题"cannot import name flib",在我看来问题是,通过安装带有anaconda的PyMC,它是针对不同的gfortran而不是{{{{{{ 1}}。我很乐意卸载并再试一次,但我希望有人能在我搞砸之前向我提供说明!

Edit2 :Traceback告诉我brew install gcc正在尝试拨打//anaconda/lib/python2.7/site-packages/pymc/flib.so,而/usr/local/Cellar/gfortran/4.8.2/gfortran/lib/libgfortran.3.dylib并不存在。我想直到最近homebrew已经在它上面安装了gfortran,因此在/usr/local/Cellar中会有一个文件夹。但是,gfortran现在由/usr/local/Cellar/gcc/4.8.3_1/bin安装brew install gcc。救命啊!


除了: 由于错误表明我从brew安装的gfortran编译器存在问题,请允许我提供一些有关详细信息,尽管可能不相关。

我通过调用

从brew安装gfortran

brew install gcc

它引发了一些错误并建议我链接gmp,mpfr,libmpc,isl和cloog。因此我做了

brew link gmp(和mpfr等)

以防万一,which gfortran给出了

/usr/local/bin/gfortran


以下是import pymc的追溯:

In [1]: import pymc
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-5f262cfcb99b> in <module>()
----> 1 import pymc

//anaconda/lib/python2.7/site-packages/pymc/__init__.pyc in <module>()
     28 from .PyMCObjects import *
     29 from .InstantiationDecorators import *
---> 30 from .CommonDeterministics import *
     31 from .NumpyDeterministics import *
     32 from .distributions import *

//anaconda/lib/python2.7/site-packages/pymc/CommonDeterministics.py in <module>()
     19 import inspect
     20 import types
---> 21 from .utils import safe_len, stukel_logit, stukel_invlogit, logit, invlogit, value, find_element
     22 from copy import copy
     23 import sys

//anaconda/lib/python2.7/site-packages/pymc/utils.py in <module>()
     12 from copy import copy
     13 from .PyMCObjects import Variable
---> 14 from . import flib
     15 import pdb
     16 from numpy.linalg.linalg import LinAlgError

ImportError: dlopen(//anaconda/lib/python2.7/site-packages/pymc/flib.so, 2): Library not loaded: /usr/local/Cellar/gfortran/4.8.2/gfortran/lib/libgfortran.3.dylib
  Referenced from: //anaconda/lib/python2.7/site-packages/pymc/flib.so
  Reason: image not found

3 个答案:

答案 0 :(得分:3)

这远不是一个完整的答案,但以下工作,至少使用从gfortran安装的brew install gcc编译器。它可能适用于不同的编译器,甚至根本没有,所以尝试以这种方式安装:

conda install -c https://conda.binstar.org/tobeplugged pymc

另外,检查PyMC开发人员Github页面in issue 556

中的更新

答案 1 :(得分:1)

在尝试安装pymc以使用python的virtualenv部署时,我遇到了类似的问题。我用两个步骤解决了它。首先,我没有正确的gcc库。我用自制软件解决了这个问题:

brew install gfortran

接下来,我之前安装的pymc试图链接到位于此处的fortran版本:

/4.9.1/libgfortran.3.dyli

默认情况下自制软件将其放在此处:

/4.9/libgfortran.3.dyli

所以我通过循环我的pymc部署来解决这个问题:

.../bin/pip uninstall pymc  
.../bin/pip install --upgrade pip
.../bin/pip install pymc

这个案例pip和pymc一起工作,找到你最近安装的fortran库。希望这会有所帮助。

答案 2 :(得分:1)

我迟到了,但这些是我作为OS X Sierra上的自制用户的步骤

主要的一点是,对于pymc构建它需要gfortran 4.2,由apple-gcc42包提供。它只是构建时的依赖项,因此您可以在pip安装完成后撤消这些更改。

brew install python3
brew install apple-gcc42
brew unlink gcc
ln -sf /usr/local/bin/gfortran-4.2 /usr/local/bin/gfortran

#optional: create virtualenv
python3 -mvenv ~/venvs/my_venv
source ~/venvs/my_venv/bin/activate
#end optional

pip3 install numpy
pip3 install pymc

# restore gcc
rm /usr/local/bin/gfortran
brew link gcc