В процессе написания скрипта 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.
Но на самом деле не знаю, что это такое.
И я также заметил сообщение «Без яиц найдено». Есть ли эти намеки?
Вы экспортировали `PYTHONPATH`? Просто установка его как переменной оболочки не помогает. Попробуйте `export PYTHONPATH =" $ PYTHONPATH: /usr/local/python/lib/python2.5 "` и используйте `env`, чтобы проверить, действительно ли он экспортируется в среду. – 2010-12-09 00:44:33
Huh. Хорошо, мне определенно нужны предложения по хорошему праймеру по пониманию переменных оболочки и среды и команд вроде `env` и` export` и `source` лучше. Я с радостью принимаю предложения. Это лишь часть проблемы, хотя ... теперь, когда я следил за предложениями Свена, этот путь, похоже, распознается в `sys.path`, но я все еще получаю сообщение об ошибке« test failed »от простой установки , Я обновлю свой вопрос, чтобы отразить это. – 2010-12-09 01:00:09