Я просмотрел информацию здесь: Как я могу заставить setuptools (или распространять) установить пакет из локальной файловой системы
Похоже, этот вопрос был опубликован очень долго время go, и я надеюсь, что за семь лет, прошедших с момента публикации, в мире Python произошли некоторые новые изменения в управлении зависимостями.
В частности, в нашем случае мы работаем в репозитории связанных пакетов GCP:
src/
airflow/
__init__.py
dags/
__init__.py
requirements.txt
dag1.py
libs/
__init__.py
utils.py
tests/
dags/
test_dag1.py
plugins/
dataflow/
__init__.py
setup.py
dataflow1.py
libs/
__init__.py
utils.py
cli_helper/
__init__.py
cli_command.py
libs/
__init__.py
util.py
shared_utils/
util1.py
Я обнаружил, что повторяю одни и те же биты вспомогательных функций в контексте каждого пакета и хотел бы поместить эти вспомогательные функции в одно место, а затем иметь связанные скопируйте файлы shared_utils либо в папку shared_utils в каждом пакете, либо даже просто скопируйте util1.py
в существующий каталог libs
для каждого пакета.
Каков самый "pythoni c" способ достижения sh этого?
Сейчас кажется, что мои единственные варианты были бы:
- Используйте файл require.txt, как указано выше, где я могу, и используйте настраиваемую команду в файле setup.py, где нельзя использовать файл require.txt.
- Создайте ссылку уровня os из каталога shared_utils в каждый пакет так, чтобы он Похоже, что каталог существует в каждом из моих пакетов.
- Упакуйте мои shared_utils, а затем установите прямо из git. Несмотря на то, что для этого варианта снова требуется файл require.txt, а в некоторых моих средах развертывания я не могу полагаться на файл require.txt, но мне все нужно запустить через setup.py