Próbuję zaimportować moduł z określonego katalogu.
Problem polega na tym, że jeśli sys.path.append(mod_directory)
użyję do dołączenia ścieżki, a następnie otworzę interpreter Pythona, katalog mod_directory
zostanie dodany na koniec listy sys.path. Jeśli wyeksportuję PYTHONPATH
zmienną przed otwarciem interpretera Pythona, katalog zostanie dodany na początek listy. W drugim przypadku mogę zaimportować moduł, ale w pierwszym nie mogę.
Czy ktoś może wyjaśnić, dlaczego tak się dzieje i dać mi rozwiązanie, aby dodać mod_directory
na początku, wewnątrz skryptu Pythona?
python
mechanize
python-import
pythonpath
Niezafałszowana wyobraźnia
źródło
źródło
site
modułu .Odpowiedzi:
Działa to zgodnie z dokumentacją. Wszystkie ścieżki określone w
PYTHONPATH
są dokumentowane jako normalnie występujące po katalogu roboczym, ale przed standardowymi ścieżkami dostarczonymi przez interpreter.sys.path.append()
dołącza do istniejącej ścieżki. Zobacz tutaj i tutaj . Jeśli chcesz, aby konkretny katalog był pierwszy, po prostu wstaw go na początku sys.path:To powiedziawszy, zazwyczaj istnieją lepsze sposoby zarządzania importem niż bezpośrednie używanie
PYTHONPATH
lub manipulowaniesys.path
. Zobacz na przykład odpowiedzi na to pytanie .źródło
Możesz użyć:
źródło
Jeśli chodzi o mnie, potrzebuję kawy na mojej ścieżce do Pythona. Mogę dodać ścieżkę do pliku
/home/xy/.bashrc
przez addexport PYTHONPATH=/home/xy/caffe-master/python:$PYTHONPATH
.do mojego
/home/xy/.bashrc
pliku.Ale kiedy używam pycharm, ścieżki nadal nie ma.
Mogę więc dodać ścieżkę do
PYTHONPATH
zmiennej, uruchamiając -> edytuj konfigurację.źródło
Tymczasowa zmiana katalogów działa dobrze w przypadku importowania:
źródło
Podczas uruchamiania skryptu Pythona z Powershell w systemie Windows powinno to działać:
źródło