PYTHONPATH игнорируется

Среда: debian 4.0

Python 2.4

Мой "проект" установлен в:

/usr/lib/python2.4/site-packages/project.

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

/главная/мне/DEV/проект/ЦСИ

Так что я делаю:

export PYTHONPATH =/home/me/dev/project/src

IPython

import foo #, который находится в src

foo.__file__

*/usr/lib/python2.4/site-packages/project/foo.py*

вместо:

/home/me/dev/project/src/project/foo.py

Как получилось? Я пытаюсь проверить патчи (выполнив экспорт выше), и я вижу:

import sys, os

sys.path

[ '',  '/USR/бен',  '/usr/lib/python2.4/site-packages',  '/Главная/мне/DEV/проект/ЦСИ',  '/usr/lib/python24.zip',  '/usr/lib/python2.4',  '/usr/lib/python2.4/plat-linux2',  '/usr/lib/python2.4/lib-tk',  '/usr/lib/python2.4/lib-dynload',  '/usr/local/lib/python2.4/site-packages',  '/usr/lib/python2.4/site-packages/PIL',  '/var/lib/python-support/python2.4',  '/usr/lib/python2.4/site-packages/IPython/Extensions',  '/home/me/.ipython']

os.environ [ 'PYTHONPATH']

/главная/мне/DEV/проект/ЦСИ

Ответ 2

Я нашел проблему (я пропустил раньше, когда кто-то указал мне на Где инициализируется sys.path Python из?).

Кажется, что easy_install создает pth файл /usr/lib/python 2.4/site-packages/easy-install.pth, который затем загружается site.py. Это вставляет путь сайта-пакетов в путь sys до PYTHONPATH. Не приятно.

Ответ 3

Я не считаю, что у вас есть контроль над тем, где PYTHONPATH вставлен в фактический список путей. Но это не единственный способ изменить путь - вы можете обновить sys.path самостоятельно, прежде чем пытаться импортировать проект.

Изменить: В вашем конкретном случае вы можете изменить путь с помощью

import sys
sys.path.insert(2, '/home/me/dev/project/src')

Ответ 4

Я вижу '/usr/lib/python2.4/site-packages' на вашем пути до '/home/me/dev/project/src', это важно? Что происходит, когда вы переключаете два?

Из документов:

Если параметр PYTHONPATH не установлен или файл там не найден, поиск продолжается в зависимом от установки пути по умолчанию

Итак, возможно, вы не нашли свою рабочую копию на своем PYTHONPATH, как вы думали?

Ответ 5

Не прямой ответ на ваш вопрос, но вы также можете использовать virtualenv, чтобы создать среда разработки. В этом virtualenv вы можете установить свой продукт в /home/me/dev/project/src в качестве пакета разработки: "python setup.py develop".

Таким образом, вам не нужно вручную изменять PYTHONPATH. Просто активируйте virtualenv, если вы хотите использовать код разработки.

Ответ 6

Я думаю, что вы настроили PYTHONPATH на /home/me/build/project/src, так как /home/me/dev/project/src не отображается в sys.path, но /home/me/build/project/src делает.

Ответ 7

Похоже, что каталог src не имеет файла __init__.py. Это не правильный пакет.