скупой на ос х лев - PullRequest
       15

скупой на ос х лев

2 голосов
/ 06 августа 2011

Я пытаюсь запустить мою рабочую среду 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 и с таким же странным поведением произошел сбой. То же самое для предварительно скомпилированных бинарных файлов, представленных на 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 в пути, теперь вопрос, почему и как я могу от нее избавиться.

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

ура Тоби

1 Ответ

2 голосов
/ 06 августа 2011

Кажется, где-то есть проблема пути. Возможно, вы устанавливаете 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')])

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

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

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

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

UPDATE:

Спасибо за предоставление запрошенной дополнительной информации. Это подтверждает, что 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. Лучший источник рекомендаций можно найти в одном из списков рассылки проекта . Удачи!

...