Python-Pakete sind Sammlungen von Modulen (wiederverwendbarer Code), die die Funktionalität der Kernsprache Python erweitern und verbessern. Python-Entwickler tragen zum offiziellen Python Package Index (PyPI) Repository bei und stellen ihre Pakete der Python-Gemeinschaft unter Open-Source-Lizenzbedingungen zur Verfügung. Die Python Packaging Authority (PyPA) verwaltet das Repository und pflegt einen Standardsatz von Werkzeugen zum Erstellen, Verteilen und Installieren von Python-Paketen.

Auf den Forschungs-Supercomputern der Indiana University sind bereits viele Pakete von Drittanbietern installiert, die häufig verwendete Python-Builds ergänzen. Wenn Sie ein Python-Paket eines Drittanbieters benötigen, das noch nicht installiert ist, können Sie pip oder setup.py verwenden, um das Paket in Ihrem Heimatverzeichnis zu installieren. Wenn Sie wissen, dass mehrere Forscher an der Verwendung eines Python-Pakets interessiert sind, das noch nicht installiert ist, können Sie beantragen, dass es als systemweites Site-Paket installiert wird.

Auf dieser Seite:

  • Python-Pakete für den persönlichen Gebrauch installieren
    • Benutzerumgebung einrichten
    • Paket installieren mit pip
    • Paket installieren mit seinem setup.py Skript
  • Verstehen Sie die Modul-Suchreihenfolge

Installieren Sie Python-Pakete für den persönlichen Gebrauch

Richten Sie Ihre Benutzerumgebung ein

Um Python-Pakete zu installieren, müssen Sie Python zu Ihrer Benutzerumgebung hinzufügen. Auf Carbonate wird Python standardmäßig zu Ihrer Benutzerumgebung hinzugefügt. Unter Big Red 3 oder wenn Sie Python zuvor entfernt haben, fügen Sie Python mit den folgenden Anweisungen zu Ihrer Benutzerumgebung hinzu:

  1. Prüfen Sie, welche Module derzeit geladen sind; geben Sie in der Befehlszeile ein:
     module list
  2. Wenn Python nicht in der Liste der derzeit geladenen Module enthalten ist, verwenden Sie den Befehl module load, um es hinzuzufügen, z. B.:
    • Um die Standardversion hinzuzufügen, geben Sie in der Befehlszeile Folgendes ein:
       module load python
    • Um eine Nicht-Standardversion hinzuzufügen:
      1. Überprüfen Sie, welche Versionen verfügbar sind; geben Sie in der Befehlszeile ein:
         module avail python
      2. Laden Sie die bevorzugte Version; geben Sie in die Befehlszeile ein (ersetzen Sie version_number durch die bevorzugte Versionsnummer):
         module load python/version_number
  3. Wenn Python unter den aktuell geladenen Modulen aufgeführt ist, Sie aber eine andere Version bevorzugen oder benötigen, müssen Sie das aktuell geladene Modul entfernen, bevor Sie die andere Version laden. Um dies mit einem Befehl zu tun, verwenden Sie module switch; geben Sie beispielsweise in die Befehlszeile ein (ersetzen Sie current_version durch die Versionsnummer des aktuell geladenen Moduls python und new_version durch die bevorzugte Versionsnummer):
     module switch python/current_version python/new_version

Um dauerhafte Änderungen an Ihrer Umgebung vorzunehmen, bearbeiten Sie Ihre~/.modules-Datei. Weitere Informationen finden Sie unter Verwenden Sie eine .modules-Datei in Ihrem Home-Verzeichnis, um Ihre Benutzerumgebung auf einem IU-Forschungs-Supercomputer zu speichern.

Weitere Informationen über die Verwendung von Modulen zur Konfiguration Ihrer Benutzerumgebung finden Sie unter Verwenden Sie Module, um Ihre Softwareumgebung auf den Forschungs-Supercomputern der IU zu verwalten.

Installieren Sie ein Paket mit pip

Das pipPaketverwaltungswerkzeug, eines der Standardwerkzeuge, die von der Python Package Authority (PyPA) verwaltet werden, ist das empfohlene Werkzeug für die Installation von Paketen aus dem Python Package Index (PyPI) Repository.

Um ein Paket aus dem PyPI-Repository zu installieren (z. B. foo), verwenden Sie den Befehl pip install mit dem Flag --user; zum Beispiel:

Die Option --user weist pip an, die Quelldistribution für Ihr Paket (z. B. foo) in das Benutzerverzeichnis site-packages für das laufende Python herunterzuladen und zu entpacken; zum Beispiel:

 ~/.local/lib/python3.6/site-packages/foo

Python sucht in diesem Verzeichnis automatisch nach Modulen, daher ist es nicht notwendig, diesen Pfad der Umgebungsvariablen PYTHONPATH voranzustellen.

Wenn Sie die Option --user weglassen, wird pip versuchen, Ihr Paket im globalen site-packages-Verzeichnis zu installieren (wo Sie nicht die notwendigen Rechte haben); als Ergebnis wird die Installation fehlschlagen.

Für weitere Informationen über die Verwendung von pip lesen Sie die Seite pip install im pip-Benutzerhandbuch.

Installieren Sie ein Paket mit seinem setup.py-Skript

Um ein Python-Paket aus einer anderen Quelle als dem PyPI-Repository zu installieren, können Sie die Quelldistribution selbst herunterladen und entpacken und dann ihr setup.py-Skript verwenden, um das Paket in das Benutzerverzeichnis site-packages zu installieren:

Die Option --user weist setup.py an, das Paket (z.B. foo) in das Benutzerverzeichnis site-packages für das laufende Python zu installieren; z.B.:

 ~/.local/lib/pythonX.Y/site-packages/foo

Python durchsucht dieses Verzeichnis automatisch nach Modulen, so dass es nicht notwendig ist, diesen Pfad der Umgebungsvariablen PYTHONPATH voranzustellen.

Wenn Sie die Option --user weglassen, wird setup.py versuchen, das Paket im globalen Verzeichnis site-packages zu installieren (wo Sie nicht die notwendigen Rechte haben); als Ergebnis wird die Installation fehlschlagen.

Alternativ können Sie die Option --home oder --prefix verwenden, um Ihr Paket an einem anderen Ort zu installieren (wo Sie die erforderlichen Rechte haben); zum Beispiel, um Ihr Paket in einem Unterverzeichnis zu installieren (zum Beispiel python-pkgs):

Hinweis:
Wenn Sie Ihr Paket an einem anderen Ort als im Benutzerverzeichnis site-packages installieren, müssen Sie den Pfad zu diesem Verzeichnis Ihrer Umgebungsvariablen PYTHONPATH voranstellen. Weitere Informationen zu PYTHONPATH finden Sie unter PYTHONPATH und der python import-Reihenfolge unten.

Weitere Informationen zur Verwendung von setup.py zur Installation von Paketen finden Sie unter Installation von Python-Modulen (Legacy-Version).

Die Modul-Suchreihenfolge verstehen

Wissen, wie der Python-Interpreter auf import-Anweisungen reagiert, kann Ihnen dabei helfen, herauszufinden, warum ein bestimmtes Modul oder Paket nicht geladen wird oder warum eine unerwartete Version eines Pakets geladen wird, obwohl die richtige Version installiert ist und der Pfad zu seinem Speicherort in Ihrer PYTHONPATH-Umgebungsvariablen aufgeführt ist.

Wenn Python startet, durchsucht es die Pfade in sys.path, einer Liste von Verzeichnissen, die den Suchpfad des Interpreters für Module bestimmt. Die Variable sys.path wird an den folgenden Stellen in dieser Reihenfolge initialisiert:

  1. Das Verzeichnis, das das Skript enthält, mit dem der Python-Interpreter aufgerufen wird (wenn der Interpreter interaktiv aufgerufen oder das Skript von der Standardeingabe gelesen wird, bleibt dieser erste Eintrag, path, eine leere Zeichenkette, die Python anweist, zuerst im aktuellen Arbeitsverzeichnis nach Modulen zu suchen)
  2. Die in PYTHONPATH aufgeführten Verzeichnisse
  3. Das versionsspezifische site-packages Verzeichnis für die laufende Python-Installation; z.B:
     <sys.prefix>/lib/pythonX.Y/site-packages

    In diesem Beispiel ist <sys.prefix> der Pfad zur laufenden Python-Installation; X.Y ist die Versionsnummer (zum Beispiel 3.8) der laufenden Python-Installation.

Standardmäßig importiert Python bei der Initialisierung auch das Modul site.py, das dem Modulsuchpfad (sys.path) standortspezifische Pfade hinzufügt, einschließlich des Pfads zu Ihrem Benutzerverzeichnis site-packages in Ihrem Home-Verzeichnis; zum Beispiel (X.Y ist die Versionsnummer der laufenden Python-Installation):

 ~/.local/lib/pythonX.Y/site-packages

Wenn site.py Pfade zu sys.path hinzufügt, durchsucht es diese nach Pfadkonfigurationsdateien (.pth), die zusätzliche Verzeichnisse enthalten, die zu sys.path hinzugefügt werden. Wenn ein Verzeichnis mehrere .pth-Dateien enthält, verarbeitet site.py sie in alphabetischer Reihenfolge.

Einige .pth-Dateien enthalten jedoch eingebettete Befehle, die Verzeichniseinträge am Anfang des Modulsuchpfads (vor dem Standardbibliothekspfad) einfügen. Dies hat zur Folge, dass ein Modul aus einem der eingefügten Verzeichnisse anstelle des gleichnamigen Moduls aus dem Standardbibliotheksverzeichnis geladen wird. Dies kann ein unerwünschtes und verwirrendes Verhalten sein, wenn eine solche Ersetzung nicht beabsichtigt ist.

Hinweis:

Wenn Ihre import-Anfragen ständig von site.py– und .pth-Dateien gestört werden, versuchen Sie, den Python-Interpreter mit dem -S (Großbuchstabe „S“) aufzurufen:

 python -S

Dies deaktiviert den automatischen Import von site.py und verhindert dadurch, dass er sys.path manipuliert. Es verhindert jedoch auch, dass site.py Ihr Benutzerverzeichnis site-packages zu sys.path hinzufügt. Um site.py zu importieren, ohne Ihr Benutzerverzeichnis site-packages zu sys.path hinzuzufügen, rufen Sie Python mit der Option -s (Kleinbuchstabe „s“) auf:

 python -s

Um zu sehen, welche Verzeichnisse Python durchsucht, wenn Sie import-Befehle eingeben, geben Sie in der Befehlszeile ein:

 python -c "import sys; print ('\n'.join(sys.path))"

Alternativ starten Sie Python im interaktiven Modus und rufen dann dieselben Befehle in dieser Reihenfolge auf (>>> ist die primäre Python-Eingabeaufforderung):

 >>>import sys >>>print ('\n'.join(sys.path))
Anmerkung:
Die Variable sys.path ist nur eine editierbare Liste von Zeichenfolgen, die Sie wie jede andere Python-Liste bearbeiten können. Vermeiden Sie es, den ersten Eintrag in der Liste (path) zu bearbeiten, da viele Pakete davon ausgehen, dass er sich auf das Verzeichnis bezieht, das das Skript zum Aufrufen des Python-Interpreters enthält.

Verwandte Dokumente

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.