2010-12-09 1 views
5

В процессе написания скрипта Python, который использует PIL сегодня, я обнаружил, что я не вижу его на своей локальной машине (OS X 10.5.8, по умолчанию 2.5 Python install).Как настроить локальный каталог библиотеки python/PYTHONPATH?

Так я бегу:

easy_install --prefix=/usr/local/python/ pil 

и жалуется немного о /usr/local/python/lib/python2.5/site-packages еще не существующих, так что я его создать, и попробуйте еще раз, и получите это:

TEST FAILED: /usr/local/python//lib/python2.5/site-packages does NOT support .pth files error: bad install directory or PYTHONPATH

You are attempting to install a package to a directory that is not on PYTHONPATH and which Python does not read ".pth" files from. The installation directory you specified (via --install-dir, --prefix, or the distutils default setting) was:

/usr/local/python//lib/python2.5/site-packages 

and your PYTHONPATH environment variable currently contains:

'' 

ОК, справедливо - я ничего не сделал, чтобы установить путь. Так что я быстро добавить строку в ~/.bash_profile:

PYTHONPATH="$PYTHONPATH:/usr/local/python/lib/python2.5"

и source его, и повторите попытку.

Такое же сообщение об ошибке.

Это любопытно, учитывая, что PYTHONPATH четко установлен; Я могу echo $PYTHONPATH и вернуться :/usr/local/python/lib/python2.5. Я решил проверить, что включает путь выглядел как внутри:

import sys 
print "\n".join(sys.path) 

, который дает:

/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5 /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-darwin /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-scriptpackages /System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload /Library/Python/2.5/site-packages /System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/PyObjC

из которых /usr/local/python/yadda/yadda заметно отсутствует.

Не уверен, что я должен делать здесь. Как заставить python распознавать это местоположение как путь включения?

UPDATE

Как полагает Свен Marnach, я пренебрегая экспортировать PYTHONPATH. Я исправил эту проблему, и теперь вижу ее, когда я распечатываю sys.path из Python. Однако я все еще получил сообщение об ошибке TEST FAILED, упомянутое выше, только с моей новой переменной среды PYTHONPATH.

Итак, я попытался сменить его с /usr/local/python/lib/python2.5 на /usr/local/python/lib/python2.5/site-packages, экспортируя и запуская ту же команду easy_install еще раз. Это приводит к всем новому результату, на первом выглядел как успех (но это не так):

Creating /usr/local/python/lib/python2.5/site-packages/site.py 
Searching for pil 
Reading http://pypi.python.org/simple/pil/ 
Reading http://www.pythonware.com/products/pil 
Reading http://effbot.org/zone/pil-changes-115.htm 
Reading http://effbot.org/downloads/#Imaging 
Best match: PIL 1.1.7 
Downloading http://effbot.org/media/downloads/PIL-1.1.7.tar.gz 
Processing PIL-1.1.7.tar.gz 
Running PIL-1.1.7/setup.py -q bdist_egg --dist-dir /var/folders/XW/XWpClVq7EpSB37BV3zTo+++++TI/-Tmp-/easy_install-krj9oR/PIL-1.1.7/egg-dist-tmp--Pyauy 
--- using frameworks at /System/Library/Frameworks 
[snipped: compiler warnings] 
-------------------------------------------------------------------- 
PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  darwin 2.5.1 (r251:54863, Sep 1 2010, 22:03:14) 
       [GCC 4.0.1 (Apple Inc. build 5465)] 
-------------------------------------------------------------------- 
--- TKINTER support available 
--- JPEG support available 
--- ZLIB (PNG/ZIP) support available 
*** FREETYPE2 support not available 
*** LITTLECMS support not available 
-------------------------------------------------------------------- 
To add a missing option, make sure you have the required 
library, and set the corresponding ROOT variable in the 
setup.py script. 

To check the build, run the selftest.py script. 
zip_safe flag not set; analyzing archive contents... 
Image: module references __file__ 
No eggs found in /var/folders/XW/XWpClVq7EpSB37BV3zTo+++++TI/-Tmp-/easy_install-krj9oR/PIL-1.1.7/egg-dist-tmp--Pyauy (setup script problem?) 

Опять же, это выглядит хорошо, но когда я иду, чтобы запустить мой сценарий:

Traceback (most recent call last):
File "checkerboard.py", line 1, in import Image, ImageDraw ImportError: No module named Image

Когда я проверяю, что теперь под /usr/local/python/ с помощью find ., я получаю:

./lib ./lib/python2.5 ./lib/python2.5/site-packages ./lib/python2.5/site-packages/site.py ./lib/python2.5/site-packages/site.pyc

Так ... ничего модуль выглядящий (я предполагаю, что site.py и site.pyc - метаданные или вспомогательные скрипты). Куда ушла установка?

Я отмечаю это:

To check the build, run the selftest.py script.

Но на самом деле не знаю, что это такое.

И я также заметил сообщение «Без яиц найдено». Есть ли эти намеки?

+1

Вы экспортировали `PYTHONPATH`? Просто установка его как переменной оболочки не помогает. Попробуйте `export PYTHONPATH =" $ PYTHONPATH: /usr/local/python/lib/python2.5 "` и используйте `env`, чтобы проверить, действительно ли он экспортируется в среду. – 2010-12-09 00:44:33

+0

Huh. Хорошо, мне определенно нужны предложения по хорошему праймеру по пониманию переменных оболочки и среды и команд вроде `env` и` export` и `source` лучше. Я с радостью принимаю предложения. Это лишь часть проблемы, хотя ... теперь, когда я следил за предложениями Свена, этот путь, похоже, распознается в `sys.path`, но я все еще получаю сообщение об ошибке« test failed »от простой установки , Я обновлю свой вопрос, чтобы отразить это. – 2010-12-09 01:00:09

ответ

4

Вы используете поставляемый Apple Python 2.5 в OS X; это сборка фреймов и по умолчанию использует /Library/Python/2.5/site-packages как место для установленных пакетов, а не /usr/local. Обычно вам не нужно указывать --prefix с фреймворком OS X. Также будьте осторожны, что setuptools (easy_install), поставляемый Apple с OS X 10.5, также довольно старый, как и сама версия Python.

Сказанное, установка PIL полностью и правильно на OS X, особенно OS X 10.5, не особенно проста. Найдите в архивах или в других местах советы и/или двоичные пакеты. В частности, если вы планируете использовать другие модули, такие как MySQL или Django, моя рекомендация - установить все (Python и PIL) с помощью диспетчера пакетов, например MacPorts.

1

Почему вы указали --prefix в своем вызове easy_install? Пробовали ли вы просто:

sudo easy_install pil 

Если вы только пытаетесь установить PIL в папку по умолчанию, я думаю, что бы easy_install мог выработать правильный путь. (Очевидно, что /usr/local/python не так ...)

EDIT: Кто-то вниз проголосовали этот ответ, может быть, потому что это было слишком лаконична . Наверное, это то, что я получаю от попыток опубликовать ответ со своего мобильного телефона. Но суть этого совершенно верна, ИМХО: если вы используете --prefix, чтобы указать пользовательское место установки с easy_install, вы как бы «делаете это неправильно». Это может быть возможно, чтобы сделать эту работу, но в документации easy_install есть раздел на custom installation locations, который даже не упоминает об этом как возможность, за исключением небольшой настройки к опции virtual python. Я бы посоветовал последовать за OS X instructions, если вы хотите установить его в произвольное местоположение на Mac, --prefix просто не похоже на правильный инструмент для работы.