scipy на os x лев

Я пытаюсь запустить свою рабочую среду python/numpy/scipy в OS X Lion.

Мне уже удалось скомпилировать 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

Я вижу папку System Extras в пути, теперь вопрос, почему и как я могу избавиться от нее.

Спасибо за вашу помощь

ура Тоби


person tobi    schedule 06.08.2011    source источник
comment
Вы не находитесь в исходном дереве scipy, когда запускаете scripy.test(), верно?   -  person EdoDodo    schedule 06.08.2011
comment
Нет, я нахожусь в своем домашнем каталоге, когда запускаю тесты. Я думаю, что scipy.test() не работает, потому что он использует старую (1.5.1) версию numpy.   -  person tobi    schedule 06.08.2011


Ответы (1)


Кажется, где-то проблема с путями. Возможно, вы устанавливаете PYTHONPATH? Когда вы используете python.org 2.7.2, каталог Extras, поставляемый Apple Python 2.7.1, не должен находиться на 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')])

Также содержимое каталога site-packages:

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

и содержимое любых других файлов .pth.

Если по-прежнему неясно, что происходит, отредактируйте свой ответ, чтобы показать результаты вышеизложенного.

ОБНОВИТЬ:

Спасибо за предоставление запрошенной дополнительной информации. Это подтверждает, что sys.path действительно включает каталог Extras из поставляемой Apple системы Python 2.7. Нет никакой очевидной причины, по которой это должно происходить. Без дополнительной информации я могу только предполагать. Как бы маловероятно это ни звучало, я могу предположить, что вы случайно скопировали некоторые файлы с одного Python на другой. Поставляемый Apple 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, но вряд ли это что-то найдет.

Вы также установили две версии numpy и scipy на свой site-packages, одну из последних выпущенных версий, а другую передовую версию. Я не знаю, предприняли ли вы шаги, чтобы очистить каталоги numpy и scipy между установками или это может вызвать проблемы, но это может быть.

На данный момент, без дополнительной информации, я бы порекомендовал вам полностью удалить установку 2.7.2 и начать заново:

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

Вы можете рассмотреть возможность использования другого подхода, такого как бинарные установщики numpy/scipy, или установить с помощью MacPorts. Лучший источник советов можно найти в одном из списков рассылки проекта. Удачи!

person Ned Deily    schedule 06.08.2011
comment
Спасибо за ответ, Нед, я отредактировал вопрос с результатами приведенного выше кода. Поскольку папка Extras находится на пути, мне нужно найти способ выйти. - person tobi; 07.08.2011