Путь к Python: повторное использование модуля Python - PullRequest
3 голосов
/ 24 февраля 2010

Я написал небольшой модуль доступа к БД, который широко используется во многих программах.

Мой код хранится в одном дереве каталогов /projects для целей резервного копирования и управления версиями, поэтому модуль следует поместить в это дерево каталогов, скажем, в /projects/my_py_lib/dbconn.py.

Я хочу легко настроить Python для автоматического поиска модулей в структуре каталогов /projects/my_py_lib (конечно, __init__.py должен быть размещен в любом подкаталоге).

Какой лучший способ сделать это в Ubuntu?

Спасибо

Адам

Ответы [ 3 ]

8 голосов
/ 24 февраля 2010

Вы можете добавить переменную окружения PYTHONPATH в файл .bashrc. например.

export PYTHONPATH=/projects/my_py_lib
2 голосов
/ 24 февраля 2010

в linux, этот каталог будет автоматически добавлен в ваш sys.path для pythonN.M

~/.local/lib/pythonN.M/site-packages/

Таким образом, вы можете помещать туда свои пакеты для каждой используемой вами версии Python.

Вам нужна копия для каждой версии python, в противном случае файл .pyc будет перекомпилироваться каждый раз, когда вы импортируете модуль с другой версией python

Это также позволяет осуществлять мелкозернистый контроль, если модуль работает только для некоторых версий Python, которые вы установили

Если вы создадите этот файл

~/.local/lib/pythonN.M/site-packages/usercustomize.py

он будет импортирован при каждом запуске интерпретатора python

0 голосов
/ 24 февраля 2010

Другой вариант - создать мягкую ссылку в /usr/lib*/python*/site-packages/:

ln -s /projects/my_py_lib /usr/lib*/python*/site-packages/

Это сделает проект видимым для всех программ Python, и любые изменения будут видны сразу же.

Основным недостатком является то, что в конечном итоге у вас будут *.pyc файлы, принадлежащие пользователю root или другому пользователю, если вы сами не скомпилируете файлы, прежде чем запускать python от имени другого пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...