ipython无法加载python所做的模块

时间:2015-10-05 12:49:33

标签: macos python-2.7 ipython

我最近更新了OSX El Capitain升级exhisting工作osx安装。现在我有一个模块,通过pip安装在anaconda发行版上,现在已经坏了。或者更好的是,可以从python正确导入模块

Python 2.7.10 |Anaconda 2.3.0 (x86_64)| (default, Sep 15 2015, 14:29:08) 
[GCC 4.2.1 (Apple Inc. build 5577)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import MDSplus as mds

虽然它没有加载ipython,声称没有找到一个库。

Python 2.7.10 |Anaconda 2.3.0 (x86_64)| (default, Sep 15 2015, 14:29:08) 
Type "copyright", "credits" or "license" for more information.

IPython 4.0.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
Using matplotlib backend: MacOSX

In [1]: import MDSplus as mds
Error importing MDSplus package: Error finding library: MdsShr

库已正确安装,它在/ etc / profile中列出,它位于/ usr / local(所以OSX el Captain的新安全系统应该没有问题)和python解释的是通过python或ipython调用是相同的(Anaconda 2.3.0)。 我该如何诊断哪个是问题?

编辑: https://groups.google.com/a/continuum.io/forum/#!topic/anaconda/PEuOKEM5fdc中提出的解决方案对我没有用。它似乎不是一个环境问题和命令

echo $DYLD_LIBRARY_PATH

指向正确的路径

编辑:

which -a ipython
ipython is /Users/vianello/anaconda/bin/ipython
which -a python 
python is /Users/vianello/anaconda/bin/python
python is /usr/bin/python

>>> import sys
>>> for x in sys.path: print x
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/pyhht-0.0.1-py2.7.egg
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/MitDevices-0.3-py2.7.egg
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/MDSplus-alpha_7.0.157-py2.7.egg
>>>//anaconda/lib/python2.7/site-packages/MDSplus-alpha_7.0.147-py2.7.egg/MDSplus
>>>/Users/vianello/anaconda/lib/python27.zip
>>>/Users/vianello/anaconda/lib/python2.7
>>>/Users/vianello/anaconda/lib/python2.7/plat-darwin
>>>/Users/vianello/anaconda/lib/python2.7/plat-mac
>>>/Users/vianello/anaconda/lib/python2.7/plat-mac/lib-scriptpackages
>>>/Users/vianello/anaconda/lib/python2.7/lib-tk
>>>/Users/vianello/anaconda/lib/python2.7/lib-old
>>>/Users/vianello/anaconda/lib/python2.7/lib-dynload
>>>/Users/vianello/anaconda/lib/python2.7/site-packages
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/PIL
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/Sphinx-1.3.1-py2.7.egg
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/aeosa
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/lmfit-0.8.3-py2.7.egg
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/setuptools-18.3.2-py2.7.egg
>>>/Users/vianello/anaconda/lib/python2.7/site-packages/suds-0.4-py2.7.egg

在iPython中同样给出结果

/Users/vianello/anaconda/bin
/Users/vianello/anaconda/lib/python2.7/site-packages/pyhht-0.0.1-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages/MitDevices-0.3-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages/MDSplus-alpha_7.0.157-py2.7.egg
/Users/vianello/anaconda/lib/python27.zip
/Users/vianello/anaconda/lib/python2.7
/Users/vianello/anaconda/lib/python2.7/plat-darwin
/Users/vianello/anaconda/lib/python2.7/plat-mac
/Users/vianello/anaconda/lib/python2.7/plat-mac/lib-scriptpackages
/Users/vianello/anaconda/lib/python2.7/lib-tk
/Users/vianello/anaconda/lib/python2.7/lib-old
/Users/vianello/anaconda/lib/python2.7/lib-dynload
/Users/vianello/anaconda/lib/python2.7/site-packages/Sphinx-1.3.1-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages/lmfit-0.8.3-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages/setuptools-18.3.2-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages/suds-0.4-py2.7.egg
/Users/vianello/anaconda/lib/python2.7/site-packages
/Users/vianello/anaconda/lib/python2.7/site-packages/PIL
/Users/vianello/anaconda/lib/python2.7/site-packages/aeosa
/Users/vianello/anaconda/lib/python2.7/site-packages/IPython/extensions
/Users/vianello/.ipython

因此可以从python和ipython中看到MDSplus-alpha_7.0.157-py2.7.egg

1 个答案:

答案 0 :(得分:1)

我首先想到的是你正在与新的Apple系统完整性保护相冲突。 iPython是使用通过/bin/bash加载的shell脚本启动的。这将导致在python启动时剥离DYLD_LIBRARY_PATH环境变量。您可以导入os然后尝试打印os.environ["DYLD_LIBRARY_PATH"]的内容来检查此项。如果该打印引发异常,那么您就知道问题所在。

一个对我有用的简单修复是编辑ipython脚本的第一行,以便#!直接调用你的python二进制文件,而不是通过bash。这不是一个长期解决方案,因为每次更新ipython时都必须重做,直到上游更改(公平地说我不确定为什么会涉及bash)。

我在http://dmtn-001.lsst.io

撰写了关于python和库路径的报告