Python-Entwicklungsumgebung | Komentor

Dieser Beitrag enthält meine Notizen zur einfachen Entwicklung von Python-Projekten und Gedanken zum Umgebungsmanagement von Python-Projekten. Wenn etwas besser und neu ist, lass es mich bitte in den Kommentaren wissen!

Für jedes Projekt müssen wir eine Projektumgebung aufbauen, um die Pakete eines Projekts, den Erstellungsprozess und das Testen zu verwalten. Mit einer fantastischen Umgebung können Entwickler von folgenden Vorteilen profitieren:

Vorteil 1. Beschleunigen Sie die Entwicklung

  • Mit einer guten Umgebung können Entwickler schnell Code auf jedem Computer erstellen/entwickeln/testen/bereitstellen
  • Eine schnelle Bereitstellung ist bei CI/CD sehr wichtig
    • leicht zu lösen
    • agiles Testen

Vorteil 2. Abhängigkeiten von Projekten kontrollieren

  • verschiedene Projekte teilen nicht dieselben Pakete, die sie nicht verwenden
  • Vermeidung von Abhängigkeitskonflikten zwischen verschiedenen Projekten
    • Zum Beispiel, wenn Paket A ein Paket mit der neuesten Version verwendet und ein anderes eine ältere Version verwendet. Wir können die Abhängigkeit pro Projekt unabhängig entwickeln und verwalten und versteckte Konflikte zwischen zwei Versionen vermeiden.
  • Projekte klein halten

Obwohl eine gute Umgebung Entwickler glücklich macht, erfordert der Aufbau einer guten Entwicklungsumgebung enorme Anstrengungen und Herausforderungen. Hier stellen wir einige gängige Praktiken zum Aufbau einer Python-Entwicklungsumgebung vor.

Tipp 1. Verwalten Sie die Python-Version

Warum

Python hat verschiedene Versionen (python 2.6, python 2.7, python 3.x …). Für jedes Projekt müssen Sie entscheiden, welche Version in Ihrem Projekt enthalten ist, oder Sie müssen ein altes Projekt entwickeln, das darauf aufbaut python 2.6. Wenn Sie Ihre Umgebung schnell ändern, können Sie feststellen, welche Version von Python Sie verwenden!

Wie

  • pyenv:
  • Wie rbenv in Ruby, wenn Sie ein Ruby-Benutzer sind XD
  • Befehle:
    • pyenv versions: listet alle Python-Versionen in pyenv auf
    • pyenv global {python_version}: Richten Sie die globale Umgebung von Python ein.
    • Bieten Sie Unterstützung für projektbezogene Python-Versionen.

Tipp 2. Separate Umgebung für jedes Projekt mit virtueller Umgebung

Warum

Um ein Projekt zu entwickeln, müssen wir die Paketstrukturen aufbauen, die dieses Projekt verwendet. Aber wenn wir eingebautes Python verwenden, können wir Anforderungspakete nicht nach Projekt trennen. Denken Sie an den Fall: Jetzt verwenden wir pyenv und wähle python 3.6 als Projekt-Python-Version und müssen 2 Projekte entwickeln, wie kann man die Paketabhängigkeiten unabhängig verwalten? Um diesen Fall zu lösen, virtualenv bietet eine Möglichkeit, eine leere Python-Umgebung eines Projekts aufzubauen, und Sie können jede Umgebung einchecken, um die zugehörige Entwicklung einfach durchzuführen.

Wie

  • Projekt-Github:
  • Befehle:
    • virtualenv ENV: Starten Sie eine neue virtuelle Python-Umgebung im ENV-Verzeichnis
    • source ENV/bin/activate: Beginnen Sie mit der Arbeit ENV Python-Umgebung
    • deactivate: Aktuelle Umgebung auschecken

Tipp 3. Verwalten Sie Paketabhängigkeiten mit Pip

Warum

Jede Sprache verfügt über ähnliche Paketverwaltungstools, mit denen Entwickler ihre Projekte einfach verwalten können (wie gem für Ruby, npm für Javascript, maven / sbt für Java …). Ein Paketverwaltungstool kann die Abhängigkeiten verwalten und Projekte lösen, zum Beispiel:

    'Werkzeug>=0.14',
    'Jinja2>=2.10',
    'itsdangerous>=0.24',
    'click>=5.1',

und diese 4 Pakete haben auch ihre Anforderungspakete, ein Paketverwaltungstool wird die Anforderungspakete rekursiv erweitern und einzeln installieren. Wenn es einen Versionskonflikt gibt (z. B. A-Paket benötigt C-Paket mit Version >= 3.0 und B-Paket benötigt C-Paket mit Version < 3.0), sollte es eine Warnung geben, um Benutzer zu benachrichtigen, um den Konflikt zu beheben.

Wie

  • Befehle
    • pip install {package_name} : Paket installieren
    • pip freeze: listet alle Pakete und Versionen in der aktuellen Umgebung auf
    • pip install -r {requirement_path}: Installieren Sie alle Pakete in requirement_path
    • pip uninstall {package_name}: ein Paket deinstallieren

Warum

Um die Erfahrung besser zu machen, pipenv kann Benutzer Pakete und Umgebungen einfacher verwalten lassen. Im Allgemeinen ist dieses Paket wie virtualenv + pip.
Außerdem löst dieses Paket auch einige Probleme, wenn Entwickler es verwenden virtualenv + pip. Als offizielle Dokumente erwähnt, die Probleme, die pipenv lösen will ist:

Die Probleme, die Pipenv zu lösen versucht, sind vielfältig:

  • Sie müssen nicht mehr verwenden pip und virtualenv separat. Sie arbeiten zusammen.
  • Verwalten von a requirements.txt Datei kann problematisch sein, daher verwendet Pipenv Pipfile und Pipfile.lock abstrakte Abhängigkeitsdeklarationen von der zuletzt getesteten Kombination zu trennen.
  • Hashes werden immer und überall verwendet. Sicherheit. Sicherheitslücken automatisch aufdecken.
  • Empfehlen Sie dringend die Verwendung der neuesten Versionen von Abhängigkeiten, um Sicherheitsrisiken zu minimieren, die sich aus veralteten Komponenten ergeben.
  • Geben Sie Ihnen Einblick in Ihr Abhängigkeitsdiagramm (z $ pipenv graph).
  • Optimieren Sie den Entwicklungsworkflow durch Laden .env Dateien.

Wie

  • Befehle
    • pipenv install: von Pipfile installieren
    • pipenv install {package}: Paket installieren
    • pipenv graph: Projektabhängigkeit im Diagramm auflisten
    • pipenv shell: Geben Sie die Python-Umgebung des Projekts ein

Durch das Zusammenstellen der obigen Tools mit einfachen Befehlen können Entwickler auf einfache Weise eine Python-Umgebung für ihre Projekte einrichten. Im Folgenden finden Sie die einfache Zusammenfassung der Schritte:

  1. Wählen Sie die Python-Version
  2. Paketumgebung erstellen
  • verwenden virtualenv + pip
  • verwenden pipenv direkt
  1. Fangen Sie an, Code zu schreiben!

Aber ja, es gibt viele erweiterte Befehle und Verwendungen zu den Paketen. Es gibt noch viel zu lernen …

Similar Posts

Leave a Reply

Your email address will not be published.