Trwałe dodawanie ścieżki do pliku do sys.path w Pythonie

103

Miałem plik o nazwie example_file.py, która chciałem użyć z różnych innych plików, więc postanowiłem dodać example_file.pydo sys.pathi importować ten plik w innym pliku, aby użyć pliku. Aby to zrobić, uruchomiłem w IPythonie następujące polecenie.

import sys
sys.path
sys.path.append('/path/to/the/example_file.py')
print(sys.path)

Widziałem ścieżkę, którą właśnie dodałem, i kiedy próbowałem zaimportować ten plik z innej ścieżki katalogu, na przykład:

import example_file

działało dobrze, ale kiedy wyszedłem z IPythona, wszedłem do niego ponownie i sprawdziłem sys.path, zobaczyłem, że dodana przeze mnie ścieżka nie jest obecna, więc jak mogę na stałe dodać ścieżkę do sys.path w Pythonie?

Shiva Krishna Bavandla
źródło
3
Uczyń swój kod odpowiednim pakietem, uczyń go łatwym do zainstalowania i ciesz się do końca życia (zamiast majsterkować). Poza tym: każda dokumentacja mówi WYRAŹNIE, że sys.path.append()akceptuje katalog zawierający plik ORAZ NIE JEDNĄ ŚCIEŻKĘ DO PLIKU.
Andreas Jung
możliwy duplikat trwałego
dodania
Nie myl ścieżki systemowej z PYTHONPATH.
Burhan Khalid

Odpowiedzi:

99

Sposobów jest kilka. Jednym z najprostszych jest utworzenie my-paths.pthpliku (jak opisano tutaj ). To jest tylko plik z rozszerzeniem .pth, które umieścisz w site-packageskatalogu systemowym . W każdym wierszu pliku umieszczasz jedną nazwę katalogu, więc możesz wstawić tam linię /path/to/the/, która doda ten katalog do ścieżki.

Możesz również użyć zmiennej środowiskowej PYTHONPATH, która jest podobna do zmiennej systemowej PATH, ale zawiera katalogi, do których zostaną dodane sys.path. Zobacz dokumentację .

Pamiętaj, że bez względu na to, co robisz, sys.pathzawiera katalogi, a nie pliki. Nie możesz „dodać pliku do sys.path”. Zawsze dodajesz jego katalog, a następnie możesz zaimportować plik.

BrenBarn
źródło
1
ok dzięki, w porządku, dodałem mój katalog, który składa się z pliku i jego pracy, gdy zaimportowałem plik z innej lokalizacji, ale problem, gdy wyszedłem z ipythona i ponownie zajrzałem, aby sprawdzić moją ścieżkę, nie pojawia się, nie chcę tego robić za każdym razem, gdy wprowadzałem kod, chcę na stałe dodać ścieżkę do katalogu sys.path, jak to zrobić
Shiva Krishna Bavandla
@Kouripm: Twój komentarz sugeruje, że w rzeczywistości nie zastosowałeś się do mojej sugestii ani sugestii w zduplikowanym poście, do którego link znajduje się powyżej.
BrenBarn
1
sitePakiet był doskonały.
Zeinab Abbasimazar
8
rozwiązałem mój problem z sys.path.append('C:\\python34\\lib\\site-packages')podziękowaniem!
tylerlindell
Dla potomności: .pthplik jest tym, co dokumentacja modułu lokacji nazywa a path configuration file. Uwaga dotycząca pliku konfiguracyjnego ścieżki:no check is made that the item refers to a directory rather than a file. No item is added to sys.path more than once. Blank lines and lines beginning with # are skipped. Lines starting with import (followed by space or tab) are executed.
Minh Tran
1

Ten sposób zadziałał dla mnie:

dodanie ścieżki, którą lubisz:

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

sprawdzanie: możesz uruchomić 'eksport' cmd i sprawdzić wyjście lub możesz to sprawdzić za pomocą tego cmd:

python -c "import sys; print(sys.path)"
Pandous
źródło