pyexiv2与自制的python 2.7.4

时间:2013-05-18 11:44:29

标签: python homebrew pyexiv2

我刚刚在macbook pro上安装了python(2.7.4)(10.7.5)。 我还用brew安装了exiv2和pyexiv2。 当我从python解释器导入pyexiv2时,我收到以下错误:

致命Python错误:解释器未初始化(版本不匹配?)

我应该做些什么来纠正这个问题(考虑到我不想按照此主题中的建议删除brewed python: How to install python library Pyexiv2 and Gexiv2 on osx 10.6.8?

非常感谢任何建议!

3 个答案:

答案 0 :(得分:4)

经过大量搜索并在网上查看一些复杂的解决方案后,我找到了一种解决此问题的简单方法,在Homebrew wiki itself中!

问题的根源是boost依赖库,它默认链接到系统python,而不是wiki中的brewed python:

  

请注意,例如 boost瓶是针对系统python而构建的,应该从源代码中酿造,以使其与酿造的Python一起使用。当两个python可执行文件都是相同的版本(例如2.7.2)时,甚至会发生这种情况。解释是具有C扩展(具有.so文件的那些)的Python包是针对某个python二进制/库编译的,这些二进制/库可能是用不同的arch构建的(例如Apple的python仍然不是纯64位)。其他事情也可能出错。欢迎来到C的肮脏黑社会。

(强调我的)

  1. 首先使用以下命令卸载依赖库和pyexiv2本身:

    brew rm $(brew deps pyexiv2)
    brew rm pyexiv2
    
  2. 然后按照here所示的来源安装boost

    brew install boost --build-from-source
    

    注意:建筑物增压可能需要时间,所以请耐心等待,我的系统需要27.9分钟! (下面的输出)

    usr/local/Cellar/boost/1.54.0: 9865 files, 568M, built in 27.9 minutes
    
  3. 然后重新安装pyexiv2和依赖项:

    brew install pyexiv2
    
  4. 就是这样,现在导入pyexiv2应该可以正常运行。

答案 1 :(得分:1)

检查您正在运行的Python(which python),并使用python选项运行-v以查看它在哪里寻找模块。检查所有这些符合您的期望。然后运行brew doctor,如果没有抱怨,请报告错误。

答案 2 :(得分:0)

我在使用bool.dev上面的答案在macOS Sierra上安装带有Homebrew的pyexiv2时遇到了一些麻烦。 Homebrewed pyexiv2在导入时不断抛出Segmentation Fault 11。

我最终通过使用以下命令修改bool.dev的答案来安装并使用Homebrewed Python:

brew install boost --build-from-source
brew install boost-python
brew install exiv2
sudo pip install git+https://github.com/escaped/pyexiv2.git

我在浏览谷歌漏洞后找到了following document上的最后一行。

希望这有帮助!