2011-08-06 234 views
2

我正試圖讓我的python/numpy/scipy工作環境在OS X Lion上運行。os x lion上的scipy

我已經成功地從編譯他們最新的源代碼版本numpy的和SciPy的與通常

python setup.py build 
python setup.py install 

我跑了Python 2.7.2的版本從python.org下載:

tobi-mbp:~ tobi$ python 
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 

如果我比進口numpy的它顯示:

>>> import numpy 
>>> numpy.__version__ 
'1.5.1' 
>>> numpy.__file__ 
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/__init__.pyc' 
>>> 

系統安裝目錄numpy的的。而

>>> import scipy 
>>> scipy.__version__ 
'0.10.0.dev' 
>>> scipy.__file__ 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/__init__.pyc' 
>>> 

給出了scipy的安裝版本。這意味着scipy.test()失敗,實際上卡住了。

我也嘗試過pip和easy_install,但是沒有編譯scipy和numpy同樣的奇怪行爲。在sourcefourge上提供的預編譯二進制文件相同。

由於這似乎是PYTHONPATH一個問題:

>>> import sys, os, pprint 
>>> pprint.pprint(sys.path) 
['', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg', 
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', 
'/Library/Python/2.7/site-packages/nose-1.1.2-py2.7.egg', 
'/Library/Python/2.7/site-packages/pip-1.0.2-py2.7.egg', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', 
'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', 
'/Library/Python/2.7/site-packages'] 
>>> pprint.pprint([p for p in os.environ.items() if p[0].startswith('PYTHON')]) 
[] 
>>> 

和站點包的內容列表

tobi-mbp:site-packages tobi$ ls -l 
total 752 
-rw-rw-r-- 1 root admin  119 12 Jun 00:25 README 
drwxr-xr-x 10 root admin  340 6 Aug 19:47 distribute-0.6.19-py2.7.egg 
-rw-r--r-- 1 tobi admin  237 6 Aug 19:48 easy-install.pth 
drwxrwxr-x 48 tobi admin 1632 6 Aug 18:19 numpy 
drwxrwxr-x 6 tobi admin  204 20 Jul 20:44 numpy-1.6.1-py2.7.egg-info 
-rw-r--r-- 1 root admin 1670 6 Aug 18:19 numpy-2.0.0.dev_26aa3cf-py2.7.egg-info 
drwxr-xr-x 4 root admin  136 6 Aug 19:48 pip-1.0.2-py2.7.egg 
drwxr-xr-x 8 tobi admin  272 6 Aug 19:48 readline-6.2.0-py2.7.egg-info 
-rwxr-xr-x 1 tobi admin 357048 6 Aug 19:48 readline.so 
drwxrwxr-x 42 tobi admin 1428 6 Aug 18:21 scipy 
-rw-r--r-- 1 root admin 1768 6 Aug 18:21 scipy-0.10.0.dev-py2.7.egg-info 
drwxrwxr-x 6 tobi admin  204 27 Feb 14:00 scipy-0.9.0-py2.7.egg-info 
-rw-r--r-- 1 tobi admin  144 6 Aug 19:47 setuptools-0.6c11-py2.7.egg-info 
-rw-r--r-- 1 tobi admin  30 6 Aug 19:47 setuptools.pth 

tobi-mbp:site-packages tobi$ more easy-install.pth 
import sys; sys.__plen = len(sys.path) 
./distribute-0.6.19-py2.7.egg 
./pip-1.0.2-py2.7.egg 
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new) 

tobi-mbp:site-packages tobi$ more setuptools.pth 
./distribute-0.6.19-py2.7.egg 

我看到在道路系統Extras文件夾,現在問題是爲什麼以及如何擺脫它。

感謝您的幫助

歡呼託比

+0

當你運行'scripy.test()'時,你不在scipy的源代碼樹中,對吧? – EdoDodo

+0

不,我在我的主目錄,當我運行測試。我猜'scipy.test()'因爲它使用老版本(1.5.1)numpy – tobi

回答

2

似乎有一個路徑問題的地方。也許你正在設置PYTHONPATH?當你運行python.org 2.7.2時,Apple提供的Python 2.7.1的Extras目錄不應該在sys.path上。爲了幫助弄清楚是怎麼回事,推出了Python 2.7.2,檢查以下內容:

>>> import sys, os, pprint 
>>> pprint.pprint(sys.path) 
>>> pprint.pprint([p for p in os.environ.items() if p[0].startswith('PYTHON')]) 

另外,該站點包目錄的內容:

$ cd /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ 
$ ls -l 
$ more easy-install.pth 

和任何其他的內容。 pth文件在那裏。

如果還不清楚發生了什麼,請編輯您的答案以顯示上述結果。

更新:

感謝您提供所需的附加信息。它確認sys.path確實包含Apple提供的系統Python 2.7中的Extras目錄。沒有明顯的原因爲什麼會發生。沒有更多的信息,我只能推測。儘管看起來不太可能,但我現在最好的猜測是,您無意中將一個Python中的某些文件複製到另一個。蘋果提供的Python有在site.py補丁添加Extras目錄:

$ cd /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 
$ ls -l site.py 
-rw-r--r-- 1 root wheel 19929 Jun 16 17:03 site.py 
$ grep Extras site.py 
      sitepackages.append(os.path.join(prefix, "Extras", "lib", "python")) 

你不應該看到,在python.org的Python:

$ cd /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 
$ ls -l site.py 
-rw-rw-r-- 1 root admin 20288 Jun 11 15:25 site.py 
$ grep Extras site.py 
$ 

你也可以做一個更完整的遞歸搜索sys.path上的所有目錄爲pth文件,但似乎不太可能找到任何東西。

您也似乎在您的site-packages中安裝了兩個版本,分別是numpyscipy,它們是最新發布的版本和其他尖端版本。我不知道你是否採取措施清除安裝之間的numpy和scipy目錄,或者是否可能導致問題,但可能會出現問題。

在這一點上,沒有更多的信息,我建議你徹底刪除2.7.2安裝,並開始了:

$ sudo rm -rf /Library/Frameworks/Python.framework/Versions/2.7 

您可以考慮使用另一種方法,如二進制numpy的/ SciPy的安裝或安裝使用MacPorts。在project's mailing lists之一上可以找到更好的建議來源。祝你好運!

+0

感謝您的答案奈德,我編輯了問題與上面的代碼的結果。由於Extras文件夾位於路徑中,因此我需要找到解決方法。 – tobi