Как настроить каталог локальной библиотеки Python / PYTHONPATH? - PullRequest
6 голосов
/ 09 декабря 2010

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

Поэтому я запускаю:

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

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

СБОЙ ТЕСТА: /usr/local/python//lib/python2.5/site-packages НЕ поддерживает ошибку .pth файлов: неверный каталог установки или PYTHONPATH

Вы пытаетесь установить пакет в каталог, который не находится в PYTHONPATH и из которого Python не читает файлы «.pth».Указанный вами каталог установки (с помощью --install-dir, --prefix или параметра по умолчанию distutils):

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

, а ваша переменная среды PYTHONPATH в настоящее время содержит:

''

Хорошо, достаточно справедливо - я ничего не сделал, чтобы установить путь.Поэтому я добавляю быструю строку в ~ / .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 /Система / Библиотека / Каркасы / Python.framework / Версии / 2.5 / lib / python2.5 / plat-mac /System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac/lib-Пакеты сценариев /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 распознавать это местоположение как включаемый путь?

ОБНОВЛЕНИЕ

Как предложил Свен Марнах, я пренебрег экспортом 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?)

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

Трассировка (последний последний вызов):
Файл "checkerboard.py", строка 1, в импорте Image, ImageDraw ImportError: Нет модуля с именем 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

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

Замечу:

Чтобы проверить сборку, запустите скрипт selftest.py.

Но не надодействительно знаю, что это такое.

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

Ответы [ 2 ]

4 голосов
/ 09 декабря 2010

Вы используете 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.особенно OS X 10.5 не особенно прост.Ищите в архивах или где-нибудь еще советы и / или бинарные пакеты.В частности, если вы планируете использовать другие модули, такие как MySQL или Django, я рекомендую установить все (Python и PIL), используя менеджер пакетов, например MacPorts .

1 голос
/ 09 декабря 2010

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

sudo easy_install pil

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

РЕДАКТИРОВАТЬ : Кто-то отклонил этот ответ, возможно, потому что он был слишком кратким.Это то, что я получаю за попытку опубликовать ответ со своего мобильного телефона.Но суть этого совершенно верна, ИМХО: если вы используете --prefix для указания пользовательского места установки с помощью easy_install, вы вроде «делаете это неправильно». возможно может сделать эту работу, но в документации easy_install есть раздел о пользовательских местах установки , который даже не упоминает это как возможность, за исключением небольшого изменения.на виртуальный питон вариант.Я бы посоветовал следовать инструкциям OS X , если вы хотите установить в нестандартное место на Mac, --prefix просто не кажется подходящим инструментом для работы.

...