我刚刚重新安装了 OSX Lion,并决定使用 macports 来获取更新的 python,以及 numpy、scipy、matplotlib、ipython 等。经过一番大惊小怪,一切看起来都正确安装在 /opt/ 文件夹中,并且 numpy、matplotlib 和 ipython运行正常,但是当我尝试在 scipy 中导入模块时,我遇到了一个似乎回到稀疏模块的故障:
>>> import scipy.sparse as sparse
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/sparse/__init__.py", line 175, in <module>
from csr import *
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/sparse/csr.py", line 12, in <module>
from sparsetools import csr_tocsc, csr_tobsr, csr_count_blocks, \
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/sparse/sparsetools/__init__.py", line 4, in <module>
from csr import *
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/sparse/sparsetools/csr.py", line 25, in <module>
_csr = swig_import_helper()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/sparse/sparsetools/csr.py", line 21, in swig_import_helper
_mod = imp.load_module('_csr', fp, pathname, description)
ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/sparse/sparsetools/_csr.so, 2): Symbol not found: ___emutls_get_address
Referenced from: /opt/local/lib/gcc45/libstdc++.6.dylib
Expected in: /usr/lib/libSystem.B.dylib
in /opt/local/lib/gcc45/libstdc++.6.dylib
导入 scipy.stats 或类似的东西最终在同一个地方。我搜索了一堆并尝试修复各种 PATH 变量(在 python 解释器中和输出),以及隐藏默认的 python 安装(s?主库中的那个和 /usr/ 中的有什么区别? ) 并重新安装 scipy,但什么也没做。
我对这些东西不是很熟悉或不舒服 - 在我擦拭并重新安装之前,我正在与 EPD 合作,但在获取新软件包以识别它之前遇到了问题。我将 python 用于科学的东西,因此并没有真正理解它的胆量!因此,非常感谢假设我几乎不了解 PATH 变量是什么的答案。
那么(a)有没有一种简单的方法来解决上面发生的事情?(b) 我应该删除一些东西并从头开始吗?(c) 是否有一种非痛苦的方式来获取 scipy、numpy、matplotlib 和 ipython(以及 qtconsole 和 html 笔记本所需的东西),并且能够在正确的位置安装新包?如果可能的话,我是否应该回到环保署(他们的学术电子邮件对我来说失败了,所以我继续前进)?