Potrzebuje zrobić przeładowanie modułu i importlib.reload(nazwa_modulu) działa ale "nazwa_modulu" musi być nazwą modułu :) Chodzi mi o to, że jeśli zrobię coś takiego:
a = nazwa_modulu
importlib.reload(a)
Dostaję błąd, że "a" nie jest prawidłową nazwą modułu. Macie na to jakiś pomysł?
- Rejestracja:ponad 6 lat
- Ostatnio:ponad 2 lata
- Postów:20
- Rejestracja:ponad 6 lat
- Ostatnio:ponad 2 lata
- Postów:20
Nie o to chodzi. Chcę zrobić przeładowanie modułu który uległ zmianie więc raz to będzie moduł o nazwie "xyz" innym razem "abc" dlatego funkcja która to sprawdza zwraca w formie zmiennej nazwę modułu który należy przeładować i tu jest problem. Kiedy do funkcji importlib.reload() wprowadzam nazwę zmiennej (która zawiera nazwę modułu) otrzymuję błąd. Ta funkcja z jakiegoś powodu nie chce przyjąć zmiennej a od razu nazwę modułu
- Rejestracja:ponad 6 lat
- Ostatnio:ponad 2 lata
- Postów:20
Zrobiłem tak jak podałeś ale nic z tego. Dalej nie widzi modułu. Otrzymuję:
x = __import__(module_name)
ModuleNotFoundError: No module named 'monitor'
W ogóle kiedy wpiszę x = import("monitor") to też wywala mi błąd, że nie rozpoznaje modułu.
Moduł ładuję: from Modules import monitor ale to bez znaczenia bo jak podam "ręcznie" nazwę modułu:
reload(monitor)
to już działa
- Rejestracja:ponad 6 lat
- Ostatnio:ponad 2 lata
- Postów:20
Struktura wygląda tak:
-/Projekt
--/Moduly
--- __init.py__
--- monitor.py
-- start.py
-- __init.py__
Pliki init.py są puste. Plik start.py jest plikiem głównym który ładuje moduł monitor.py z katalogu Moduly za pomocą from Modules import monitor
- Rejestracja:ponad 6 lat
- Ostatnio:ponad 2 lata
- Postów:20
No nie działa. Spakowałem te pliki tutaj:
https://megawrzuta.pl/download/471fa1f1690d92e2e84784a1945c849f.html
Zauważyłem jeszcze jedną rzecz. Zmodyfikowałem nieco kod z pliku start.py i wygląda on teraz tak:
x = monitor
importlib.reload(x)
print(x.zmienna)
I działa. Kiedy zmienna x wygląda jak powyżej ona wtedy jest zadeklarowana jako <class 'module'> dlatego działa ale kiedy zmienna x jest typu string już nie działa. Czy da się zmienić typ string na <class 'module'>?
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.