Pakiety Pythona to kolekcje modułów (kod wielokrotnego użytku), które rozszerzają i zwiększają funkcjonalność podstawowego języka Python. Twórcy Pythona wnoszą swój wkład do oficjalnego repozytorium Python Package Index (PyPI), udostępniając swoje pakiety społeczności Pythona na zasadach licencji open source. Python Packaging Authority (PyPA) zarządza repozytorium i utrzymuje standardowy zestaw narzędzi do budowania, dystrybucji i instalacji pakietów Pythona.
Na superkomputerach badawczych Indiana University wiele pakietów firm trzecich jest już zainstalowanych, aby uzupełnić powszechnie używane kompilacje Pythona. Jeśli masz wyjątkowe zapotrzebowanie na pakiet Pythona innej firmy, który nie jest jeszcze zainstalowany, możesz użyć pip
lub setup.py
, aby zainstalować pakiet w swoim katalogu domowym. Jeśli wiesz, że kilku badaczy jest zainteresowanych używaniem pakietu Pythona, który nie jest jeszcze zainstalowany, możesz poprosić o zainstalowanie go jako systemowego pakietu witryny.
Na tej stronie:
- Instalowanie pakietów Pythona do użytku osobistego
- Ustawianie środowiska użytkownika
- Instalowanie pakietu przy użyciu
pip
- Instalowanie pakietu przy użyciu jego
setup.py
skryptu
- Zrozumienie kolejności wyszukiwania modułów
Instalowanie pakietów Pythona do użytku osobistego
Ustawianie środowiska użytkownika
Aby zainstalować pakiety Pythona, musisz mieć Pythona dodanego do swojego środowiska użytkownika. Na Carbonate, Python jest domyślnie dodany do środowiska użytkownika. Na Big Red 3, lub jeśli wcześniej usunięto Pythona, użyj następujących instrukcji, aby dodać Pythona do środowiska użytkownika:
- Sprawdź, które moduły są obecnie załadowane; w wierszu poleceń wpisz:
module list
- Jeśli Pythona nie ma wśród listy aktualnie załadowanych modułów, użyj polecenia
module load
, aby go dodać; na przykład:- Aby dodać wersję domyślną, w wierszu poleceń wpisz:
module load python
- Aby dodać wersję nie-domyślną:
- Sprawdź, które wersje są dostępne; w wierszu poleceń wpisz:
module avail python
- Wczytaj preferowaną wersję; w wierszu poleceń wpisz (zastąp
version_number
numerem preferowanej wersji):module load python/version_number
- Sprawdź, które wersje są dostępne; w wierszu poleceń wpisz:
- Aby dodać wersję domyślną, w wierszu poleceń wpisz:
- Jeśli Python jest wymieniony wśród aktualnie załadowanych modułów, ale wolisz lub musisz używać innej wersji, musisz usunąć aktualnie załadowany moduł przed załadowaniem innej wersji. Aby zrobić to za pomocą jednego polecenia, użyj
module switch
; na przykład w wierszu poleceń wpisz (zastąpcurrent_version
numerem wersji aktualnie załadowanego modułupython
, anew_version
numerem preferowanej wersji):module switch python/current_version python/new_version
Aby wprowadzić trwałe zmiany w środowisku, należy edytować swój plik~/.modules
. Aby uzyskać więcej informacji, zobacz Użyj pliku .modules w swoim katalogu domowym, aby zapisać środowisko użytkownika na superkomputerze badawczym IU.
Aby uzyskać więcej informacji na temat używania modułów do konfigurowania środowiska użytkownika, zobacz Użyj modułów do zarządzania środowiskiem oprogramowania na superkomputerach badawczych IU.
Instalowanie pakietu za pomocą pip
Narzędzie do zarządzania pakietami pip
, jedno ze standardowych narzędzi utrzymywanych przez Python Package Authority (PyPA), jest zalecanym narzędziem do instalowania pakietów z repozytorium Python Package Index (PyPI).
Aby zainstalować pakiet z repozytorium PyPI (na przykład foo
), użyj polecenia pip install
z flagą --user
; na przykład:
Opcja --user
kieruje pip
do pobrania i rozpakowania dystrybucji źródłowej dla Twojego pakietu (na przykład foo
) w katalogu użytkownika site-packages
dla uruchomionego Pythona; na przykład:
~/.local/lib/python3.6/site-packages/foo
Python automatycznie przeszukuje ten katalog w poszukiwaniu modułów, więc poprzedzanie tej ścieżki do zmiennej środowiskowej PYTHONPATH nie jest konieczne.
Jeśli pominiesz opcję --user
, pip
spróbuje zainstalować pakiet w globalnym katalogu site-packages
(gdzie nie masz odpowiednich uprawnień); w rezultacie instalacja nie powiedzie się.
Więcej na temat używania pip
, zobacz stronę pip install w podręczniku użytkownika pip.
Instalacja pakietu przy użyciu jego setup.py
Aby zainstalować pakiet Pythona ze źródła innego niż repozytorium PyPI, można pobrać i rozpakować dystrybucję źródłową samodzielnie, a następnie użyć jej skryptu setup.py
do zainstalowania pakietu w katalogu użytkownika site-packages
:
Opcja --user
kieruje setup.py
do zainstalowania pakietu (na przykład foo
) w katalogu użytkownika site-packages
dla uruchomionego Pythona; na przykład:
~/.local/lib/pythonX.Y/site-packages/foo
Python automatycznie przeszukuje ten katalog w poszukiwaniu modułów, więc poprzedzanie tej ścieżki do zmiennej środowiskowej PYTHONPATH nie jest konieczne.
Jeśli pominiesz opcję --user
, setup.py
będzie próbował zainstalować pakiet w globalnym katalogu site-packages
(gdzie nie masz odpowiednich uprawnień); w rezultacie instalacja nie powiedzie się.
Alternatywnie możesz użyć opcji --home
lub --prefix
, aby zainstalować pakiet w innej lokalizacji (gdzie masz niezbędne uprawnienia); na przykład, aby zainstalować pakiet w podkatalogu (na przykład python-pkgs
):
site-packages
, będziesz musiał poprzedzić ścieżkę do tego katalogu swoją zmienną środowiskową PYTHONPATH. Więcej o PYTHONPATH, zobacz PYTHONPATH i kolejność python import
poniżej. Aby uzyskać więcej informacji na temat używania setup.py
do instalowania pakietów, zobacz Instalowanie modułów Pythona (wersja Legacy).
Zrozumienie kolejności wyszukiwania modułów
Znajomość reakcji interpretera Pythona na instrukcje import
może pomóc w ustaleniu, dlaczego dany moduł lub pakiet nie jest ładowany lub dlaczego ładowana jest nieoczekiwana wersja pakietu, mimo że zainstalowana jest właściwa wersja, a ścieżka do jej lokalizacji znajduje się w zmiennej środowiskowej PYTHONPATH.
Gdy Python się uruchamia, przeszukuje ścieżki znalezione w sys.path
, liście katalogów, która określa ścieżkę wyszukiwania modułów przez interpreter. Zmienna sys.path
jest inicjalizowana z następujących miejsc, w tej kolejności:
- Katalog zawierający skrypt używany do wywołania interpretera Pythona (jeśli interpreter jest wywoływany interaktywnie lub skrypt jest odczytywany ze standardowego wejścia, ten pierwszy element,
path
, pozostaje pustym łańcuchem, co kieruje Pythona do przeszukiwania w pierwszej kolejności modułów w bieżącym katalogu roboczym) - Katalogi wymienione w PYTHONPATH
- Katalogi
site-packages
specyficzne dla wersji uruchomionej instalacji Pythona; na przykład:<sys.prefix>/lib/pythonX.Y/site-packages
W tym przykładzie
<sys.prefix>
to ścieżka do działającej instalacji Pythona;X.Y
to numer wersji (na przykład3.8
) działającej instalacji Pythona.
Domyślnie Python importuje również moduł site.py
przy inicjalizacji, który dodaje ścieżki specyficzne dla witryny do ścieżki wyszukiwania modułów (sys.path
), w tym ścieżkę do katalogu użytkownika site-packages
w katalogu domowym; na przykład (X.Y
będzie numerem wersji działającej instalacji Pythona):
~/.local/lib/pythonX.Y/site-packages
As site.py
adds paths to sys.path
, it scans them for path configuration (.pth
) files, which contain additional directories that are added to sys.path
. Jeśli katalog zawiera wiele plików .pth
, site.py
przetwarza je w kolejności alfabetycznej.
Jednakże niektóre pliki .pth
zawierają wbudowane polecenia, które wstawiają wpisy katalogów na początku ścieżki wyszukiwania modułów (przed standardową ścieżką biblioteki). W rezultacie, moduł z jednego z wstawionych katalogów załaduje się zamiast modułu o tej samej nazwie z katalogu biblioteki standardowej. Może to być niepożądane i mylące zachowanie, chyba że takie zastąpienie jest zamierzone.
Jeśli Twoje żądania import
są konsekwentnie zakłócane przez pliki site.py
i .pth
, spróbuj wywołać interpreter Pythona za pomocą polecenia -S
(wielka litera „S”):
python -S
Wyłącza to automatyczny import site.py
i w rezultacie uniemożliwia mu manipulowanie sys.path
. Jednak uniemożliwia to również site.py
dodawanie katalogu użytkownika site-packages
do sys.path
. Aby zaimportować site.py
bez dodawania katalogu użytkownika site-packages
do sys.path
, wywołaj Pythona z opcją -s
(małą literą „s”):
python -s
Aby sprawdzić, które katalogi Python skanuje podczas wydawania poleceń import
, w wierszu poleceń wpisz:
python -c "import sys; print ('\n'.join(sys.path))"
Alternatywnie, uruchom Pythona w trybie interaktywnym, a następnie wywołaj te same polecenia w tej kolejności (>>>
jest głównym znakiem zachęty Pythona):
>>>import sys >>>print ('\n'.join(sys.path))
sys.path
jest tylko edytowalną listą łańcuchów, którą możesz edytować jak każdą inną listę Pythona. Unikaj edycji pierwszej pozycji na liście (path
), ponieważ wiele pakietów zakłada, że odnosi się ona do katalogu zawierającego skrypt używany do wywoływania interpretera Pythona. Dokumenty związane
.