Python: совместное использование общего кода в семействе скриптовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python: совместное использование общего кода в семействе скриптов

Сообщение Anonymous »

Я пишу семейство скриптов Python в рамках проекта; каждый скрипт находится в подкаталоге проекта, например:

Код: Выделить всё

projectroot
|
|- subproject1
|    |
|    |- script1.main.py
|    `- script1.merger.py
|
|- subproject2
|    |
|    |- script2.main.py
|    |- script2.matcher.py
|    `- script2.merger.py
|
`- subproject3
|
|- script3.main.py
|- script3.converter.py
|- script3.matcher.py
`- script3.merger.py
Теперь несколько сценариев используют общий код. Общий код лучше всего рассматривать как часть самого проекта, а не что-то, что я мог бы скомпилировать отдельно и сделать из него библиотеку или добавить PYTHONPATH для всего сайта. Я мог бы разместить этот код в разных местах, например, в самом каталоге projectroot или в дочернем каталоге projectroot, называемом common (возможно).

Однако большинство способов, которые я придумал до сих пор, включают создание пакетов из моих подпроектов с пустыми файлами __init__.py и использование относительного импорта (или избыточное использование sys.path в каждом Хуже того, похоже, что построение структуры пакета на основе этого семейства скриптов противоречит следующему предупреждению от отклоненного PEP-3122:


Внимание! Этот PEP отклонен. Гвидо рассматривает запуск скриптов внутри пакета как антишаблон.


Если скрипты внутри пакета. является антипаттернистским, как я могу настроить так, чтобы общий код оставался в одном проекте? Или здесь приемлема система на основе модулей и пакетов? Какой подход самый чистый? (Кстати, я бы предпочел иметь файл, например, Shared. py или common.py в корневом каталоге проекта, вместо того, чтобы создавать каталог утилит, который является родственным «настоящим» подпроектам.)

Подробнее здесь: https://stackoverflow.com/questions/180 ... of-scripts
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»