2009-12-11 3 views
3

Я разрабатываю библиотеку и приложение, которое использует библиотеку в Python 2.6. Я разместил файл «mylib.pth» в «site-packages», чтобы я мог import mylib из моего приложения.Настройка пути Python при разработке библиотечного модуля

Я использую DVCS, поэтому, когда я хочу исправить ошибку или добавить функцию в библиотеку, я делаю ветку репозитория и работаю в этой ветке. Чтобы проверить мое приложение с изменениями, внесенными в библиотеку, я редактирую путь в «mylib.pth», чтобы указать на новую ветвь разработки.

Это немного утомительно, если у меня есть несколько параллельных ветвей моей библиотеки, идущих на одном. Я должен продолжить редактирование файла «mylib.pth» перед тестированием, чтобы убедиться, что я тестирую правильную версию моей библиотеки. Есть ли способ использовать текущий путь (т. Е. Ветвь развития библиотеки, в которой я являюсь), чтобы установить путь к библиотеке при вызове моего приложения вместо использования «mylib.pth» в глобальных «сайтах-пакетах», каталог?

ответ

5

virtualenv Что вы ищете? Из описания:

Imagine у ​​вас есть приложение, которое нуждается в версии 1 LibFoo, но другие приложения требует версии 2. Как вы можете использовать оба эти приложения? Если вы устанавливаете все в /usr/lib/python2.4/site-packages (или любого стандартного расположения вашей платформы есть), легко оказаться в ситуации, когда вы случайно обновить приложение, которое не должна» t .

+0

Кажется, что это касается моей проблемы довольно хорошо. Я побежал «virtualenv». в области разработки моей библиотеки, которая создала подкаталоги Lib и Scripts. Я добавил измененный «.pth» файл в каталог ./Lib/site-packages. Затем, чтобы вызвать мое приложение с помощью версии моей библиотеки, я запустил «./Scripts/python myApp.py» – Trent

2

Если вы используете setuptools, вы можете сказать setup.py develop в своем рабочем дереве, и он будет обрабатывать файлы .pth для вас.

+0

В настоящее время я не использую setuptools, но это похоже на довольно простое решение. Я буду изучать использование setuptools. – Trent

1

Конечно, вы можете изменить sys.path, чтобы добавить текущий каталог (или его подкаталог) в путь поиска. site.addsitedir - хороший способ сделать это. Поскольку вы будете делать это с Python, у вас может быть любая логика, которая вам нравится для определения того, какую директорию нужно добавить; вы можете установить его на os.path.normpath в текущем каталоге, если он похож на ветку или ищет самую новую ветку на диске или что-то еще.

Вы можете поместить этот код в модуль sitecustomize.py или другое место запуска.

1

Вы также можете рассмотреть возможность использования zc.buildout. Он позволяет создавать точки входа с настраиваемыми путями python.

1

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

export PYTHONPATH=.:/the/new/version 
Смежные вопросы