2010-02-24 3 views
3

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

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

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

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

Спасибо,

Adam

ответ

8

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

export PYTHONPATH=/projects/my_py_lib 
+0

+1 Простой, правильный и работает. –

0

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

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

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

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

+2

И вам нужен root-доступ. –

2

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

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

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

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

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

При создании этого файла

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

будет импортироваться каждый раз, когда вы запускаете интерпретатор питона

+0

+1 хороший, не знал этого. У вас есть ссылка на документацию? –

+0

Это заставит меня поставить код вне моего дерева кода. –

+0

@Adam Matan, вы можете поместить символические ссылки в свое дерево кода, но имейте в виду, что файлы .pyc будут сбиты, если вы используете разные версии Python, лучше иметь сценарий «выпуска», чтобы скопировать его там. –

Смежные вопросы