Ilekroć użyję sys.path.append
, nowy katalog zostanie dodany. Jednak po zamknięciu Pythona lista powróci do poprzednich (domyślnych?) Wartości. Jak mogę na stałe dodać katalog PYTHONPATH
?
źródło
Ilekroć użyję sys.path.append
, nowy katalog zostanie dodany. Jednak po zamknięciu Pythona lista powróci do poprzednich (domyślnych?) Wartości. Jak mogę na stałe dodać katalog PYTHONPATH
?
Musisz dodać nowy katalog do zmiennej środowiskowej PYTHONPATH
, oddzielony dwukropkiem od jego poprzedniej zawartości. W dowolnej formie Uniksa możesz to zrobić w skrypcie startowym odpowiednim dla powłoki, której używasz ( .profile
lub cokolwiek, w zależności od ulubionej powłoki) za pomocą polecenia, które znowu zależy od powłoki; w systemie Windows można to zrobić za pomocą graficznego interfejsu użytkownika.
superuser.com
może być lepszym miejscem do zadawania dalszych pytań, tj. po więcej szczegółów, jeśli potrzebujesz szczegółowych informacji o tym, jak wzbogacić zmienną środowiskową na wybranej platformie i powłoce, ponieważ tak naprawdę nie jest to pytanie programistyczne per se.
Jeśli używasz bash (na dystrybucji Mac lub GNU / Linux), dodaj to do swojego
~/.bashrc
źródło
~/.bashrc
a następnie uruchomsource ~/.bashrc
patrz stackoverflow.com/questions/2518127/…sudo su
na początku pliku .bashrc jest złym pomysłem . Ten post zgadza się ze mną. Przynajmniej w moim systemie nie jest to nawet konieczne.Zamiast manipulacji
PYTHONPATH
możesz również utworzyć plik konfiguracji ścieżki . Najpierw dowiedz się, w którym katalogu Python szuka tych informacji:Z jakiegoś powodu nie działa to w Pythonie 2.7. Tam możesz użyć:
Następnie utwórz
.pth
plik w tym katalogu zawierający ścieżkę, którą chcesz dodać (utwórz katalog, jeśli nie istnieje).Na przykład:
źródło
python -m site --user-site
i(create the directory if it doesn't exist)
części były to, czego brakuje, aby uzyskać jego pracy.somelib.pth
? Jeśli nie, zgadnij, dlaczego to nie działa?Działa to w systemie Windows
Wtedy będziesz mógł zobaczyć wszystkie moduły w tych ścieżkach ze swoich skryptów.
źródło
Jeśli ktoś nadal jest zdezorientowany - jeśli korzystasz z komputera Mac, wykonaj następujące czynności:
open .bash_profile
export PYTHONPATH=$PYTHONPATH:foo/bar
źródło
export
kluczem było to, czego mi brakowało !!!!, głosowałem, dziękuję bardzo!Możesz dodać ścieżkę za pomocą pliku pythonrc, który ma domyślnie ~ / .pythonrc w systemie Linux. to znaczy.
Możesz także ustawić
PYTHONPATH
zmienną środowiskową w globalnym pliku rc, takim jak~/.profile
Mac lub Linux, lub za pomocą Panelu sterowania -> System -> zakładka Zaawansowane -> Zmienne środowiskowe w systemie Windows.źródło
Aby dać nieco więcej wyjaśnień, Python automatycznie konstruuje swoje ścieżki wyszukiwania (jak wspomniano powyżej i tutaj ) przy użyciu
site.py
skryptu (zwykle znajdującego się w sys.prefix +,lib/python<version>/site-packages
jak równieżlib/site-python
). Można uzyskać wartość sys.prefix:Site.py skrypt następnie dodaje szereg katalogów, w zależności od platformy, takie jak
/usr/{lib,share}/python<version>/dist-packages
,/usr/local/lib/python<version>/dist-packages
na ścieżce przeszukiwania , a także wyszukuje te ścieżki w<package>.pth
plikach konfiguracyjnych, które zawierają konkretne dodatkowe ścieżki wyszukiwania. Na przykład easy-install utrzymuje kolekcję zainstalowanych pakietów, które są dodawane do pliku specyficznego dla systemu, np. Na Ubuntu/usr/local/lib/python2.7/dist-packages/easy-install.pth
. W typowym systemie jest kilka takich plików .pth, które mogą wyjaśnić niektóre nieoczekiwane ścieżki w sys.path:Można więc utworzyć plik .pth i umieścić w dowolnym z tych katalogów (w tym sitedir, jak wspomniano powyżej ). Wydaje się, że jest to sposób, w jaki większość pakietów jest dodawana do sys.path, zamiast używać PYTHONPATH.
Uwaga: W OSX istnieje specjalna dodatkowa ścieżka wyszukiwania dodana przez site.py dla „kompilacji frameworka” (ale wydaje się, że działa w przypadku normalnego używania Pythona w wierszu poleceń):
/Library/Python/<version>/site-packages
(np. Dla Python2.7:),/Library/Python/2.7/site-packages/
gdzie powinny znajdować się pakiety innych firm do zainstalowania (zobacz plik README w tym katalogu). Można więc dodać plik konfiguracyjny ścieżki zawierający dodatkowe ścieżki wyszukiwania, np. Utworzyć plik o nazwie,/Library/Python/2.7/site-packages/pip-usr-local.pth
który zawiera,/usr/local/lib/python2.7/site-packages/
a następnie python systemowy doda tę ścieżkę wyszukiwania.źródło
Dla mnie zadziałało, gdy zmieniłem
.bash_profile
plik. Zmiana.bashrc
pliku działała tylko do momentu ponownego uruchomienia powłoki.W Pythonie 2.7 powinno to wyglądać następująco:
na końcu
.bash_profile
pliku.źródło
W systemie Linux możesz utworzyć dowiązanie symboliczne ze swojego pakietu do katalogu PYTHONPATH bez konieczności zajmowania się zmiennymi środowiskowymi. Coś jak:
źródło
Dodawanie
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
do ~ / .bashrc może nie działać, jeśliPYTHONPATH
obecnie nie istnieje (z powodu:
).Dodanie powyższego do mojego ~ / .bashrc załatwiło sprawę w Ubuntu 16.04
źródło
echo PYTHONPATH
i nic się nie pokazało! oznacza to, że ta PYTHONPATH nie została zainicjowana, więc po prostu wklejam ten wierszexport PYTHONPATH=$PYTHONPATH:<PATH_TO_TF>/TensorFlow/models/research/object_detection
do~/.bashrc
pliku i dosource ~/.bashrc
niego. Później, kiedy „powtórzyłem $ PYTHONPATH”, dało mi:<PATH_TO_TF>/TensorFlow/models/research/object_detection
to jakąś sugestię, czy zrobiłem coś złego?export PYTHONPATH=<PATH_TO_TF>/TensorFlow/models/research/object_detection
, kiedy eksportujesz PYTHONPATH po raz pierwszy, musisz to zrobić bez${PYTHONPATH}:
udziału:<PATH_TO_TF>/TensorFlow/models/research/object_detection
usuwa 2export PYTHONPATH=$PYTHONPATH:/TensorFlow/models/research/slim
.. jakieś sugestie na ten temat, jak to naprawić?W systemie MacOS zamiast podawania ścieżki do określonej biblioteki. Podanie pełnej ścieżki do głównego folderu projektu w
sprawił, że mój dzień, na przykład:
po tym wykonaj:
źródło
Aby dodać odpowiedź awesomo, możesz również dodać tę linię do swojego
~/.bash_profile
lub~/.profile
źródło
.bash_profile
jeśli używasz powłoki logowania, w przeciwnym razie użyj.profile
Dodanie nowej ścieżki do PYTHONPATH odbywa się ręcznie przez:
dodając ścieżkę do swojego profilu ~ / .bashrc, w terminalu przez:
wklej następujące elementy do swojego profilu
następnie upewnij się, że Twój profil bashrc jest za każdym razem, gdy uruchamiasz swój kod w terminalu:
Mam nadzieję że to pomoże.
źródło
Dodałem na stałe do systemu Windows Vista, Python 3.5
System> Panel sterowania> Zaawansowane ustawienia systemu> Zaawansowane (dotknij) Zmienne środowiskowe> Zmienne systemowe> (jeśli nie widzisz zmiennej PYTHONPATH w kolumnie Zmienna) (kliknij) Nowy> Nazwa zmiennej: PYTHONPATH> Wartość zmiennej:
Zapisz katalog w wartości zmiennej. To szczegóły odpowiedzi Blue Peppers.
źródło
Poniższy skrypt działa na wszystkich platformach, ponieważ jest czystym Pythonem. Wykorzystuje ścieżkę pathlib, udokumentowaną tutaj https://docs.python.org/3/library/pathlib.html , aby działała na wielu platformach. Uruchom go raz, zrestartuj jądro i to wszystko. Inspirowany przez https://medium.com/@arnaud.bertrand/modifying-python-s-search-path-with-pth-files-2a41a4143574 .
źródło
To jest aktualizacja tego wątku, która zawiera kilka starych odpowiedzi.
Dla osób używających MAC-OS Catalina lub nowszych (> = 10,15), wprowadzono nowy terminal o nazwie
zsh
(zamiennik staregobash
).Miałem pewne problemy z powyższymi odpowiedziami z powodu tej zmiany i nieco rozwiązałem ten problem, tworząc plik
~/.zshrc
i wklejając katalog plików do$PATH
i$PYTHONPATH
Najpierw zrobiłem:
Po otwarciu edytora wkleiłem następującą treść:
zapisał go i ponownie uruchomił terminal.
WAŻNE: Ścieżka powyżej jest ustawiona na ścieżkę mojego komputera, musisz ją dostosować do swojego pytona.
źródło
W Python 3.6.4 możesz utrzymywać sys.path w sesjach Pythona w następujący sposób:
Zdecydowanie zalecamy korzystanie z virtualenv i virtualenvwrapper, w przeciwnym razie zagracisz swoją ścieżkę
źródło
Najkrótsza ścieżka między A <-> B to linia prosta;
źródło