Я видел всевозможные примеры и другие подобные вопросы, но я не могу найти пример, который точно соответствует моему сценарию. Я чувствую, как полный болван спрашивает об этом, потому что таких вопросов очень много, но я просто не могу заставить это работать "правильно". Вот мой проект:
user_management (package)
|
|------- __init__.py
|
|------- Modules/
| |
| |----- __init__.py
| |----- LDAPManager.py
| |----- PasswordManager.py
|
|------- Scripts/
| |
| |----- __init__.py
| |----- CreateUser.py
| |----- FindUser.py
Если я переведу "CreateUser.py" в основной каталог user_management, я могу легко использовать: "import Modules.LDAPManager"
для импорта LDAPManager.py - это работает. То, что я не могу сделать (что я хочу сделать), поддерживает CreateUser.py в подпапке Scripts и импортирует LDAPManager.py. Я надеялся выполнить это, используя "import user_management.Modules.LDAPManager.py"
. Это не работает. Короче говоря, я могу получить файлы Python, чтобы они выглядели глубже в иерархии, но я не могу заставить Python script ссылаться на один каталог и вниз на другой.
Обратите внимание, что я могу решить свою проблему, используя:
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
import Modules.LDAPManager as LDAPManager
Я слышал, что это плохая практика и не рекомендуется.
Файлы в сценариях должны выполняться напрямую (требуется ли init.py в скриптах?). Я читал, что в этом случае я должен выполнить CreateUser.py с флагом -m. Я пробовал некоторые варианты этого и просто не могу заставить CreateUser.py распознавать LDAPManager.py.