Совместное использование модулей утилит в проектах Python - PullRequest
10 голосов
/ 30 ноября 2009

Какова была бы лучшая стратегия структуры каталогов для совместного использования модуля утилит в моих проектах на python? Поскольку общие модули будут обновлены новыми функциями, я бы не хотел помещать их в каталог установки python.

project1/
project2/
sharedUtils/

Из проекта1 не могу использовать "import .. \ sharedUtils", есть ли другой способ? Я бы не стал жестко кодировать местоположение "sharedUtils"

Заранее спасибо

Ответы [ 3 ]

6 голосов
/ 30 ноября 2009

Сделать отдельную отдельную упаковку? И поместить его в / site-packages вашей установки python?

Существует также мой личный фаворит, когда дело доходит до режима разработки: использование символических ссылок и / или *.pth файлов.

5 голосов
/ 30 ноября 2009

Предположим, у вас есть sharedUtils/utils_foo и sharedUtils/utils_bar. Вы можете отредактировать PYTHONPATH, включив в него sharedUtils, а затем импортировать их в project1 и project2, используя

import utils_foo
import utils_bar
etc.

В Linux вы можете редактировать ~ / .profile примерно так:

PYTHONPATH=/path/to/sharedUtils:/other/paths
export PYTHONPATH

Использование переменной окружения PYTHONPATH влияет на каталоги, которые python ищет при поиске модулей. Поскольку каждый пользователь может установить свою PYTHONPATH, это решение подходит для личных проектов.

Если вы хотите, чтобы все пользователи на машине могли импортировать модули в sharedUtils, тогда Вы можете достичь этого, используя файл .pth. То, куда вы поместите файл .pth, может зависеть от вашего дистрибутива Python. Увидеть http://bob.pythonmac.org/archives/2005/02/06/using-pth-files-for-python-development/

4 голосов
/ 04 декабря 2012

Структура каталогов:

project1/foo.py
sharedUtils/bar.py

Имея каталоги, как вы их показали, из foo.py внутри каталога project1 вы можете добавить относительный путь к sharedUtils следующим образом:

import sys
sys.path.append("../sharedUtils")
import bar

Это позволяет избежать жесткого кодирования пути C:/../sharedUtils и будет работать до тех пор, пока вы не измените структуру каталогов.

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