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:

  1. Sprawdź, które moduły są obecnie załadowane; w wierszu poleceń wpisz:
     module list
  2. 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ą:
      1. Sprawdź, które wersje są dostępne; w wierszu poleceń wpisz:
         module avail python
      2. Wczytaj preferowaną wersję; w wierszu poleceń wpisz (zastąp version_number numerem preferowanej wersji):
         module load python/version_number
  3. 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ąp current_version numerem wersji aktualnie załadowanego modułu python, a new_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):

Uwaga:
Jeśli zainstalujesz swój pakiet w lokalizacji innej niż katalog użytkownika 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:

  1. 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)
  2. Katalogi wymienione w PYTHONPATH
  3. 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ład 3.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.

Uwaga:

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))
Uwaga:
Zmienna 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

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.