Python virtual environment helfen bei der Verwaltung von Softwareabhängigkeiten und stellen sicher, dass Code reproduzierbar ist. Unser Experte erklärt, wie sie funktionieren und zeigt Ihnen, wie Sie damit loslegen.
Python virtual environment ermöglichen Entwicklern die Steuerung von Softwareabhängigkeiten im Python- Code. Softwareabhängigkeit bedeutet, dass eine bestimmte Software ein oder mehrere andere Softwarepakete oder Bibliotheken benötigt, um erfolgreich ausgeführt zu werden. Beispielsweise benötigt TensorFlow , eine Deep-Learning-Bibliothek in Python, ein anderes Python-Paket namens NumPy, um ausgeführt zu werden.
Virtuelle Umgebungen sind nützliche Methoden, um sicherzustellen, dass bei jeder Ausführung der Software konsistent die richtigen Paket-/Bibliotheksversionen verwendet werden. Dies hilft dabei, Softwareprojekte von potenziell widersprüchlichen Bibliotheken und Paketen zu isolieren, die auf einem Betriebssystem installiert sind. Widersprüchliche Softwarepakete können zum Ausfall einer Software führen.
Darüber hinaus stellen virtuelle Umgebungen sicher, dass die Ergebnisse aus der Ausführung von Code reproduzierbar sind. Reproduzierbarkeit ist ein wesentlicher Bestandteil der Softwareentwicklung und des Softwaretests, da sie garantiert, dass Softwareprogramme wie vorgesehen ausgeführt werden und funktionieren. Wenn die Ergebnisse eines Softwareprogramms nicht reproduziert werden können, kann es die Aufgabe, für die es entwickelt wurde, nicht zuverlässig ausführen.
Wann empfiehlt sich die Verwendung einer virtuellen Umgebung?
Beim Entwickeln von Python-Code empfiehlt es sich im Allgemeinen, in einer virtuellen Python-Umgebung zu arbeiten, da diese Möglichkeiten bietet, das Verhalten eines Softwareprogramms zu steuern. Wenn Code geschrieben wird, um bei einer bekannten Eingabe eine bestimmte Ausgabe zu erzeugen, sollte für diese Eingabe zuverlässig dieselbe Ausgabe erzeugt werden, unabhängig davon, ob der Code auf meinem Computer, einem Remote-Computer oder dem Laptop einer anderen Person ausgeführt wird. Das Entwickeln von Software ohne definierte virtuelle Umgebung erhöht das Risiko, dass der Code fehlschlägt oder unerwünschte Ergebnisse erzeugt.
Die Verwendung virtueller Umgebungen ist noch wichtiger, wenn Sie an einem größeren Python-Entwicklungsprojekt arbeiten, das viele Bibliotheken, Dateien und Python-Skripte umfasst. Mit zunehmender Komplexität des Codes wird auch die Verwaltung der Softwareabhängigkeiten noch komplexer, da das Risiko einer fehlerhaften Paketverwaltung und damit der Existenz von fehlerproduzierendem Code steigt.
Wenn Sie als Entwickler parallel an mehreren Python-Projekten arbeiten, sollten Sie für jedes Projekt eine eigene virtuelle Umgebung verwenden. Auf diese Weise lässt sich die Arbeit an mehreren Projekten besser organisieren und das Risiko von Fehlern bei der Codeausführung wird verringert. Wenn Sie an einem großen Python-Entwicklungsprojekt zusammenarbeiten, erleichtert die Verwendung virtueller Umgebungen außerdem die Zusammenarbeit, da die Mitarbeiter sicher sein können, dass sie die richtigen Versionen jeder Softwarebibliothek verwenden, die für die Ausführung des Codes erforderlich sind. Darüber hinaus erleichtert es das Debuggen, da das Risiko von Fehlern aufgrund von Paketfehlern verringert wird.
Vorteile virtueller Umgebungen
Virtuelle Umgebungen bieten viele Vorteile, darunter eine einfachere Abhängigkeitsverwaltung und ein geringeres Risiko von Paketkonflikten und Fehlern, die durch Softwareveralterung verursacht werden. Softwareabhängigkeitsverwaltung ist der Prozess der Verwaltung der Softwareversionen, die für die Ausführung einer Software erforderlich sind. Paketkonflikte entstehen, wenn zwei oder mehr Softwarepakete inkompatibel sind, wodurch eine Software nicht mehr ausgeführt werden kann. Softwareveralterung tritt ein, wenn ein Teil oder die gesamte Software oder Bibliothek geändert oder entfernt wird.
Um die Bedeutung virtueller Umgebungen zu verstehen, betrachten wir das Beispiel der Veralterung von Software. Die statistische Analysebibliothek Pandas hatte früher eine Methode namens ix, mit der Zeilen und Spalten nach Name oder Index gesucht werden konnten. Nach einer Aktualisierung wurde die Methode ix verworfen und durch neue Methoden namens ilocund ersetzt loc. Stellen Sie sich ein Python-Skript vor, das eine alte Version von Pandas verwendet, die wiederum die ixMethode zum Suchen von Spalten nach Namen nutzt. Ohne die Verwendung virtueller Umgebungen kann der Code nicht ausgeführt werden, wenn eine aktualisierte oder neuere Version von Pandas dieses Python-Skript ausführt, da die ixMethode in einer neueren Version von Pandas nicht mehr vorhanden ist. Mit virtuellen Umgebungen können Sie jedoch die ältere Version von Pandas definieren, die Ihnen die Verwendung der ixMethode ohne Probleme ermöglicht. Diese Methode bedeutet, dass sich das Verhalten des Codes nicht unerwartet ändert, weil die Version von Pandas falsch verwaltet wird.
Virtuelle Umgebungen verhindern auch Systemausfälle aufgrund von Paketkonflikten. Beispielsweise stehen bestimmte Versionen von NumPy und TensorFlow in Konflikt, was zu Systemausfällen führen kann, wenn Sie die Paketversionen nicht berücksichtigen. Dies kann zu unerwarteten Leistungsproblemen oder Kompatibilitätskonflikten führen. Insbesondere wurde berichtet, dass NumPy 1.20.0 aufgrund von Abweichungen in der Definition der Matrixmultiplikation mit TensorFlow 2.5.0 in Konflikt steht. Wenn Sie diese beiden Paketversionen installieren, ohne diesen Konflikt zu berücksichtigen, können Fehler bei der Codeausführung auftreten. Umgekehrt können Sie mit virtuellen Umgebungen kompatible Versionen von Tensorflow und NumPy definieren und Probleme vermeiden.
Die Verwendung virtueller Umgebungen vereinfacht die Abhängigkeitsverwaltung und verringert zudem das Risiko von Paketkonflikten. Beide Vorteile tragen zur Reproduzierbarkeit von Codeergebnissen bei. Wenn Sie die genauen Versionen der Bibliotheken und Pakete angeben, die das System benötigt, führen Softwareupdates nicht zu Fehlern und Bugs. Darüber hinaus erleichtert die Verwaltung von Abhängigkeiten und die Minimierung von Paketkonflikten die Zusammenarbeit bei der Softwareentwicklung erheblich, da jeder Entwickler über umfassende Kenntnisse der vorhandenen Paketanforderungen verfügt, die zur zuverlässigen Einbindung neuer Paketabhängigkeiten verwendet werden können.
Viele Pakete in Python ermöglichen Ihnen das Erstellen und Verwalten virtueller Umgebungen. Conda wird in der Datenwissenschaft häufig verwendet . Es ist Teil der Anaconda-Distribution, was praktisch ist, da viele Datenwissenschaftler und Ingenieure für maschinelles Lernen wahrscheinlich auch Anaconda verwenden.
Schritt-für-Schritt-Anleitung zu python virtual environment
Der Workflow zum Erstellen und Verwalten python virtual environment sieht wie folgt aus:
- Erstellen Sie eine python virtual environment.
- Installieren Sie Pakete in der virtuellen Python-Umgebung.
- Aktivieren Sie die python virtual environment.
- Deaktivieren Sie die python virtual environment.
Ein interessanter Anwendungsfall ist das Erstellen und Verwalten python virtual environment für Aufgaben der explorativen Datenanalyse (EDA). Wir können beispielsweise eine virtuelle Umgebung für die explorative Datenanalyse der auf DataFabrica verfügbaren synthetischen Kreditkartentransaktionsdaten erstellen . Die Daten enthalten synthetische Kreditkartentransaktionsbeträge, Kreditkarteninformationen, Transaktions-IDs und mehr. Die kostenlose Stufe kann unter der Apache 2.0-Lizenz kostenlos heruntergeladen, geändert und freigegeben werden .
1. Erstellen Sie eine python virtual environment
Navigieren Sie zunächst zur Anaconda-Website und folgen Sie den Anweisungen zur Installation von Conda:
Folgen Sie als Nächstes den Anweisungen zum Überprüfen Ihres Installations-Hashs hier . Sobald Sie Ihren Installations-Hash überprüft haben, doppelklicken Sie auf die heruntergeladene .pkg-Datei und folgen Sie den Anweisungen, um die Installation abzuschließen. Sie können testen, ob die Installation erfolgreich war, indem Sie den Befehl conda listin ein Terminalfenster eingeben.
Als nächstes erstellen wir eine virtuelle Conda-Umgebung, conda create –name myenvwobei „myenv“ der Name unserer Umgebung ist. Da wir eine Umgebung für die Durchführung von EDA auf Kreditkartentransaktionsdaten erstellen, benennen wir unsere Umgebung entsprechend. Erstellen wir eine Umgebung namens „cc_data_eda_env“:
Beim Ausführen dieses Befehls wird eine Meldung angezeigt, in der Sie gefragt werden, ob Sie fortfahren möchten:
Geben Sie y ein und drücken Sie die Eingabetaste:
Wir sollten die folgende Ausgabe sehen:
2. Installieren Sie Pakete in der virtuellen Python-Umgebung
Wir sehen, dass die Ausgabe Anweisungen zum Aktivieren und Deaktivieren unserer neu erstellten Conda-Umgebung enthält. Die von uns erstellte Umgebung ist leer. Wir können dieselbe Umgebung auch erstellen, in der wir die spezifischen Python-Pakete angeben, die wir in unserer Umgebung installieren möchten. Plotly ist eine häufig verwendete Python-Bibliothek für Datenvisualisierung und EDA. Lassen Sie uns diese Umgebung erneut erstellen, wobei die Plotly-Bibliothek installiert ist. Dazu setzen wir im selben Conda-Erstellungsbefehl wie zuvor einfach den Namen des Pakets, das wir installieren möchten, nach dem Namen unserer Umgebung:
Beim Ausführen dieses Codes werden wir gefragt, ob wir die alte Version der cc_data_eda-Umgebung entfernen möchten. Geben Sie y ein und drücken Sie die Eingabetaste. Wir sehen eine lange Nachricht, in der alle Plotly-Abhängigkeiten aufgeführt sind, die zusätzlich zu Plotly selbst installiert werden:
Um mit der Erstellung der Umgebung fortzufahren, drücken Sie y. Wir sollten eine Ausgabe sehen, die den Installationsfortschritt für jedes Paket anzeigt.
Schließlich können wir eine Datei environment.yml angeben, um die Liste der Pakete anzugeben, die wir installieren möchten. Dies erleichtert die Verwaltung von Abhängigkeiten, insbesondere wenn wir eine große Anzahl von Paketinstallationen benötigen. Dies liegt daran, dass Sie mit einer Datei environment.yml eine umfassende Liste aller Pakete und ihrer Versionen, die zum Ausführen Ihrer Software erforderlich sind, leicht zugänglich haben. Ohne diese Datei müssten Sie eine lange Liste der auf Ihrem Computer installierten Pakete durchgehen, um die von Ihren Programmen verwendeten Pakete und ihre jeweiligen Versionen zu finden. Auf einem Laptop oder einem PC sind die von einem Softwareprogramm verwendeten Pakete höchstwahrscheinlich eine kleine Teilmenge der langen Liste der auf einem PC installierten Pakete. Dies macht die Verwaltung von Softwarepaketen und ihren Versionen ineffizient und in einigen Fällen unmöglich haptic.
Erstellen wir mit dem folgenden Befehl eine Datei „environment.yml“:
Und lassen Sie uns das folgende Paket in unserer Datei environment.yml auflisten:
Anschließend können wir mit unserer Datei environment.yml eine neue Umgebung erstellen:
Beim Ausführen des Codes sollten wir die folgende Ausgabe sehen:
3. Aktivieren Sie die python virtual environment
Sobald wir mit der Erstellung der Umgebung fertig sind, können wir sie mit dem folgenden Befehl im Terminal aktivieren:
Der Umgebungsname in Klammern sollte die aktivierte Umgebung angeben:
Nachdem unsere Umgebung nun aktiviert ist, können wir eine Logik definieren, die diese Pakete verwendet. Stellen Sie dazu sicher, dass sich die CSV-Datei im selben Verzeichnis befindet wie Ihre YAML-Datei. Als Nächstes erstellen wir eine Python-Datei namens cc_eda.py:
Importieren wir in diese Datei jedes der Pakete:
Als nächstes lesen wir unsere Daten in einen Pandas DataFrame ein:
Lassen Sie uns die ersten fünf Datenzeilen anzeigen:
Beenden Sie nun die Python-Datei und führen Sie Folgendes aus:
Als Nächstes führen wir einige logische Operationen mit NumPy-Methoden aus. Nehmen wir die Log-Transformation des Transaktionsbetrags und speichern die Werte in einer neuen Spalte namens „log_transaction_amnt“:
Lassen Sie uns dann unser Python-Skript erneut ausführen:
Als nächstes erstellen wir ein Zeitreihen-Liniendiagramm des Transaktionsbetrags im Zeitverlauf. Dies erfordert sowohl Pandas-Operationen als auch Matplotlib-Methoden.
Lassen Sie uns zunächst unsere Datumsspalte formatieren:
Filtern Sie unsere Daten, um einen einzelnen Händler zu berücksichtigen:
Ausreißer entfernen:
Definieren Sie unsere Gruppierungsspalte:
Führen Sie eine Groupby-Summe für Monat_Jahr aus:
Und zeichnen Sie unsere Zeitreihe auf:
Und noch einmal:
Wir können auch Logik hinzufügen, die Seaborn-Methoden und -Operationen umfasst:
Und noch einmal:
Schließlich können wir mit Plotly Express eine Geokarte der Kundenzahlen in den USA erstellen. Die folgende Logik verwendet ein Zuordnungswörterbuch für Abkürzungen von Bundesstaatsnamen, das der Übersichtlichkeit halber weggelassen wurde:
Beachten Sie, dass wir nur die Python-Pakete verwenden können, die wir in der Datei requirements.txt angegeben haben. Wenn wir beispielsweise versuchen würden, eine Methode in Scikit-learn zu importieren und zu verwenden, würden wir die Fehlermeldung „Paket nicht gefunden“ erhalten:
Und wenn wir laufen:
Damit dieses Skript erfolgreich ausgeführt werden kann, müssen wir unsere Datei environment.yml mit dem Paketnamen sklearn und der Version aktualisieren:
Anschließend müssen wir unsere Umgebung deaktivieren und eine neue Umgebung mit der neuen Datei environment.yml erstellen (Sie können einen neuen Namen wählen oder den alten Namen beibehalten, solange die alte Umgebung entfernt wurde).
4. Deaktivieren Sie eine python virtual environment
Das Deaktivieren einer Conda-Umgebung ist unkompliziert. Geben Sie einfach den folgenden Befehl im Terminal ein:
Wenn Sie diesen Befehl ausführen, sollte der Umgebungsname nicht mehr in Klammern vor dem Benutzernamen und dem aktuellen Arbeitsverzeichnis angezeigt werden:
Verwenden Sie python virtual environment
python virtual environment sind wichtige Tools für jeden, der Code in Python entwickelt. Sie erleichtern das Definieren und Verwalten von Code, der von mehreren Softwarepaketen abhängt, sowie das Debuggen von Code, das Verhindern von Softwarekonflikten, das Durchführen von Tests und die Zusammenarbeit mit anderen Entwicklern. Softwarefehler sind häufig auf veraltete Softwarebibliotheken zurückzuführen, die in einer verwalteten virtuellen Umgebung leicht erkannt werden können.
Darüber hinaus stehen einige Python-Bibliotheken in Konflikt miteinander, und wenn man die genauen Versionen jeder verwendeten Bibliothek kennt, lässt sich Softwarekonflikte oder -inkompatibilitäten leichter erkennen. Darüber hinaus muss Softwarecode nach der Entwicklung häufig strengen Tests unterzogen werden. Dieser Prozess erfordert, dass Entwickler die Variablen kennen, z. B. Bibliotheksversionen, und dass diese konstant bleiben. Schließlich möchten Sie, wenn Sie testen, um herauszufinden, was die Software zum Absturz bringt, sicherstellen, dass der getestete Fall nicht auf eine schlechte Verwaltung der Bibliothek zurückzuführen ist. All diese Faktoren erleichtern die Zusammenarbeit bei der Softwareentwicklung erheblich, was letztendlich zu einer insgesamt schnelleren Codeentwicklung führt. Das Verständnis python virtual environment ist eine unschätzbar wertvolle Fähigkeit für jeden, der in seiner täglichen Arbeit mit Python programmiert.
Der in diesem Beitrag verwendete Code ist auf GitHub verfügbar . Eine kostenlose Probe der in diesem Artikel verwendeten Daten ist hier verfügbar . Den vollständigen Datensatz finden Sie hier .