Python: import modułu z innego katalogu na tym samym poziomie w hierarchii projektu
Widziałem różnego rodzaju przykłady i inne podobne pytania, ale nie mogę znaleźć przykładu, który dokładnie pasuje do mojego scenariusza. Czuję się totalnie cholernie pytający o to, ponieważ jest tak wiele podobnych pytań, ale nie wydaje mi się, żeby to działało „poprawnie”. Oto mój projekt:
user_management (package)
|
|------- __init__.py
|
|------- Modules/
| |
| |----- __init__.py
| |----- LDAPManager.py
| |----- PasswordManager.py
|
|------- Scripts/
| |
| |----- __init__.py
| |----- CreateUser.py
| |----- FindUser.py
Jeśli przeniosę „CreateUser.py” do głównego katalogu user_management, mogę z łatwością użyć:"import Modules.LDAPManager"
aby zaimportować LDAPManager.py --- to działa. To, czego nie mogę zrobić (co chcę zrobić), to zachować CreateUser.py w podfolderze Skrypty i zaimportować LDAPManager.py. Miałem nadzieję, że uda mi się to osiągnąć"import user_management.Modules.LDAPManager.py"
. To nie działa. Krótko mówiąc, mogę łatwo uzyskać pliki Pythona w hierarchii, ale nie mogę uzyskać skryptu Pythona, aby odwoływał się do jednego katalogu i do innego.
Pamiętaj, że mogę rozwiązać mój problem, używając:
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
import Modules.LDAPManager as LDAPManager
Słyszałem, że to zła praktyka i zniechęcony.
Pliki w skryptach mają być wykonywane bezpośrednio (jest tow tym.py w Skryptach nawet konieczne?). Czytałem, że w tym przypadku powinienem wykonać CreateUser.py z flagą -m. Wypróbowałem kilka odmian tego i po prostu nie wydaje mi się, aby CreateUser.py rozpoznał LDAPManager.py.