Каков наилучший способ структурирования Python проектов с использованием общего пакета? - PullRequest
2 голосов
/ 13 февраля 2020

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

В идеале я хочу что-то вроде этого:

main_directory
├── shared_package
│   ├── __init__.py
│   ├── package_file1.py
│   └── package_file2.py
├── project1
│   ├── main.py
│   ├── module1.py
│   └── other_package
│       ├── __init__.py
│       └── other_package_file.py
└── project2
    └── ...

Я не могу понять, как сделать так, чтобы импорт работал корректно для импорта shared_package из python файлов в проекте1. Есть ли предпочтительный способ сделать это?

Любая помощь будет оценена!

1 Ответ

2 голосов
/ 13 февраля 2020

shared_package в конечном итоге будет автономным. Другие люди будут импортировать и устанавливать его обычным способом, и он будет храниться с остальными модулями python в site-packages или где-либо еще.

Чтобы повторить это, я рекомендую просто обновить PYTHONPATH чтобы указать main_directory (или где бы вы ни указали shared_package в любом случае) - таким образом,

import shared_package

все равно будет нормально работать с кодом, если shared_package был установлен нормально, потому что он находится на pythonpath в любом случае.

Обратите внимание, что PYTHONPATH - это переменная среды, поэтому средства для этого будут различаться в зависимости от вашей операционной системы. В любом случае, быстрый поиск того, как навсегда изменить переменную в вашей ОС, должен быть легким.

...