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:
- Prüfen Sie, welche Module derzeit geladen sind; geben Sie in der Befehlszeile ein:
module list
- 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:
- Überprüfen Sie, welche Versionen verfügbar sind; geben Sie in der Befehlszeile ein:
module avail python
- Laden Sie die bevorzugte Version; geben Sie in die Befehlszeile ein (ersetzen Sie
version_number
durch die bevorzugte Versionsnummer):module load python/version_number
- Überprüfen Sie, welche Versionen verfügbar sind; geben Sie in der Befehlszeile ein:
- Um die Standardversion hinzuzufügen, geben Sie in der Befehlszeile Folgendes ein:
- 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 Siecurrent_version
durch die Versionsnummer des aktuell geladenen Modulspython
undnew_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 pip
Paketverwaltungswerkzeug, 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
):
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:
- 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) - Die in PYTHONPATH aufgeführten Verzeichnisse
- 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 Beispiel3.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.
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))
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.