Mam folder wiadomości (pakiet) z plikiem __init__.py
i innym modułem messages_en.py
w środku. W __init__.py
gdybym import messages_en
to działa, ale __import__
nie powiedzie się z "ImportError: nie moduł o nazwie messages_en"Jak mogę zaimportować pakiet za pomocą __import __(), gdy nazwa pakietu jest znana tylko w środowisku wykonawczym?
import messages_en # it works
messages = __import__('messages_en') # it doesn't ?
Kiedyś myślałem 'import X' jest po prostu kolejnym sposobem na powiedzenie __import__('x')
+1 i dzięki za wyjaśnienie, ale może właśnie dlatego można opisać Przykład OP nie działa? Wydaje się, że stara się alias messages_en do wiadomości, co wydaje się (naiwnie dla mnie) uzasadnione. –
Jak wyjaśnił "wr", to wynikało z poziomu i wiem, że __import__ nie powinien być zwykle używany, ale w tym przypadku muszę dynamicznie czytać język z pliku konfiguracyjnego dodawać do wiadomości i importować ten plik –
Ten przykład był bardzo pomocny, zwłaszcza jeśli próbujesz wczytać moduły z podkatalogów. Pomogło mi naprawić błąd "Nie znaleziono atrybutu". – Carlos