W systemie Ubuntu (10.10) mam pakiet Python, który się instaluje /usr/local/lib/python2.6/site-packages/
. Nie jest to zawarte w domyślnej ścieżce (sys.path). Jak dodać ten katalog do ścieżki?
Ustawienie $PYTHONPATH
zmiennej środowiskowej jest oczywiście rozwiązaniem, ale szukam bardziej eleganckiego sposobu na zrobienie tego. Na przykład easy_install
umieszcza w nim również zainstalowane pakiety, moja sys.path wygląda mniej więcej tak:
['', '/usr/local/lib/python2.6/dist-packages/keyring-0.5.1-py2.6.egg',
'/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk',
'/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload',
'/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages',
'/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/pymodules/python2.6',
'/usr/lib/pymodules/python2.6/gtk-2.0']
więc ścieżka nie jest oczywiście domyślną funkcją binarną Pythona.
Czy istnieje jeden plik konfiguracyjny zawierający powyższe wpisy? Lub w jaki sposób można go zmodyfikować?
sitecustomize.py
którysite.py
próbuje tam importować i modyfikowaćsys.path
.Możesz utworzyć nowy plik o nazwie
/etc/profile.d/local_python.sh
z zawartościąCo ustawi
PYTHONPATH
zmienną dla wszystkich zalogowanych użytkowników w twoim systemie.źródło
Chciałbym podsumować moje ustalenia dotyczące modyfikacji ścieżki Pythona. Można to zrobić na dwa sposoby.
PYTHONPATH
Każdy plik .pth , który znajduje się w domyślnej ścieżce (patrz poniżej), zostanie włączony do jego zawartości
sys.path
. Format wspomnianego pliku .pth jest prosty: jedna ścieżka (folderu) na wiersz. Co zaskakujące, ścieżki mogą być bezwzględne lub względne w stosunku do pliku .pth .Domyślna ścieżka to miejsce, w którym przebywa tłumacz i
<some-prefix>/lib/python<version>/site-packages
gdzie<some-prefix>
zwykle/usr/
.PYTHONPATH
jest zmienną środowiskową twojego systemu operacyjnego. W systemach uniksowych podajesz je wedługenv
. Globalna modyfikacja takich zmiennych odbywa się za pomocą skryptów .sh w/etc/profile.d/
folderze, jak wspomniano w @ TestUser16418.źródło
Na przykład, jeśli chcesz zaimportować
suds
moduł, który jest dostępny jako.egg
plik:źródło