Dies ist eine Fortsetzung von [UpNext2 Development Record # 0] 1. Dieses Mal werden wir beim Erstellen der Vorverarbeitung in Python eine Umgebung einrichten, die die beim letzten Mal vorgestellten Ziele C1 bis C3 erfüllt. Die lokale Umgebung ist MacOS Catalina.
Ich werde die Ziele C1 bis C3 erneut veröffentlichen.
Artikel | Artikel | Bemerkungen |
---|---|---|
C1 | Versionsverwaltung mit GitHub | Bisher wurde keine Versionsverwaltung durchgeführt. Dieses Mal werden wir GitHub verwenden, um den Entwicklungsprozess aufzuzeichnen und zu veröffentlichen. Die GitHub-Version von V1 war nur eine Dateikopie, nachdem die Entwicklung abgeschlossen war. |
C2 | Verwendung von VS-Code | Herkömmlich flattern/Nur mit Dart gemacht und verwendet Android Studio. Dieses Mal habe ich vor, Python für die Vorverarbeitung zu verwenden, daher ist dies eine gute Gelegenheit, um mit VS Code zu entwickeln. |
C3 | Testbeschreibung | Da es sich um eine persönliche Entwicklung handelt, habe ich keinen Test geschrieben. Als ich jedoch in UpNext auf einen komplizierten Fehler bei der Entwicklung einer bestimmten Skala stieß, war ich mir der Notwendigkeit von Tests sehr bewusst. Ich beschloss, einen Test für das Studium richtig zu schreiben. |
Im Folgenden finden Sie eine schrittweise Übersicht über das Setup.
Nachdem Sie verschiedene Dinge ausprobiert haben, war das folgende Verfahren das beste, um lokal und remote erfolgreich zu verbinden.
Auf diese Weise können Sie Staging durchführen, um ein Commit für das lokale Repository durchzuführen und ein Push an das Remote-Repository zu senden, indem Sie VS Code auf der Benutzeroberfläche ausführen. (Möglicherweise müssen Sie den Benutzernamen usw. mit dem Befehl git festlegen.)
Außerdem macht es Spaß, GitGraph usw. als Add-On für VSCode aufzunehmen.
Übertragen Sie keine Arbeitsverzeichnisse und Dateien verschiedener Tools, Arbeiten für die Entwicklung und Informationen, die Sie nicht veröffentlichen möchten (von Ihnen selbst erhaltener API-Schlüssel usw.), in das Repository. Der Mechanismus dafür ist .gitignore.
Erstellen Sie eine Gitignore-Datei im Stammverzeichnis Ihres Projekts. Der Inhalt ist vorerst wie folgt.
.gitignore
.*
*cache*
*local*
*secret*
Insbesondere wird * und \ * Cache * benötigt. Ohne sie würde eine große Anzahl von Systemarbeitsdateien und allgemeinen Bibliotheken für virtuelle Python-Umgebungen im Repository landen.
Ich mache das gerne, aber es ist möglich zu vermeiden, .gitignore selbst zu pushen.
Fügen Sie excludesfile = .gitignore in der Gruppe [core] von .git / config in der Projekthomepage hinzu.
In VScode können Sie die Python-Umgebung auswählen und verwenden. Wenn Sie jedoch verschiedene Dinge vorbereiten, stellen Sie sicher, dass Python 3 standardmäßig verwendet wird. Passen Sie den Pfad so an, dass 3 Serien als Python -V angezeigt werden. Stellen Sie sicher, dass der Pip auch 3er ist. (Beachten Sie, dass in neuerem Python nicht empfohlen wird, pip direkt einzugeben, sondern als Python -m pip verwendet zu werden.)
Da Python je nach Version der Bibliothek kompliziert ist, wird empfohlen, für jede Anwendung eine virtuelle Umgebung vorzubereiten und den Bibliothekssatz zu wechseln. Bisher wurden pyenv und virtualenv verwendet, um die Python-Version selbst einzuschließen. In Python 3.6 und höher werden sie jedoch nicht empfohlen. Es wird jetzt empfohlen, venv zu verwenden.
Richten Sie im Projekthaus die venv-Umgebung als python -m venv .pyvenv ein. .pyvenv kann ein beliebiger anderer Name sein, aber es ist am besten, mit zu beginnen. Um das Ziel von .gitignore zu sein. In der venv-Umgebung sind verschiedene gängige Bibliotheken installiert. Wenn Sie also nicht auf .gitignore klicken, ist dies eine große Sache. Wenn Sie eine neue venv-Umgebung erstellen, befindet sich die Bibliothek einschließlich pip im Ausgangszustand. Installieren Sie sie daher gemäß den verschiedenen Anweisungen erneut.
Nachdem Sie die venv-Umgebung eingerichtet haben, können Sie die venv-Umgebung in VSCode auswählen. Wählen Sie sie daher aus (zunächst wird sie nicht angezeigt, selbst wenn Sie auf die Statusleiste klicken. Wählen Sie sie in Python: Wählen Sie Interpreter im Menü der Befehlspalette. Scheint zu müssen). Wenn Sie es hier auswählen, aktiviert VS Code automatisch venv. Natürlich müssen Sie in der Zwischenzeit die Python-Erweiterung von VSCode installieren.
Derzeit scheint es, dass der in der Bibliothek integrierte Pytest häufig anstelle des in Python integrierten Unittest verwendet wird. Wählen Sie pytest aus Python: Konfigurieren Sie Tests im Menü der Befehlspalette, um die Umgebung zu erstellen. Wählen Sie zu diesem Zeitpunkt .Root-Verzeichnis als Testverzeichnis.
Teilen Sie Ihre Verzeichnisse wie folgt auf, um Ihre Quellen und Tests sauber zu halten: Da wir in diesem Plan planen, anderen Code als Python zu programmieren, ist dieser außerdem in Teilprojekte unterteilt.
(Project root)/
├ src - temp.py
└ tests - test_temp.py
Wenn Sie temp.py aus test_temp.py mit einer normalen relativen Pfadangabe importieren, werden Sie hier von einem Fehler abhängig.
Durch Anwenden der aktualisierten Lösung von "[Ich habe mit ModuleNotFoundError gerungen, die auftritt, wenn ich den Testcode und den zu testenden Code in separate Verzeichnisse in Python stelle] 2" konnte ich sie elegant lösen. Es war.
Die Lösung ist:
Wenn Sie das Obige mit dem Testverzeichnis kombinieren, das in den Pytest-Einstellungen auf .Root-Verzeichnis festgelegt ist, können Sie den Test normal ausführen (Beachten Sie, dass der Import fehlschlägt, wenn Sie test_temp.py direkt ausführen, ohne die VSCode-Benutzeroberfläche zu verwenden. ). Darüber hinaus wird die auf VSCode basierende Korrespondenz auch im Referenzlink veröffentlicht, diesmal durch Ausprobieren.
Wählen Sie flake8 unter Python: Wählen Sie Linter aus dem Menü der Befehlspalette. Es kann verschiedene andere Einstellungen geben, aber ich erinnere mich keinen Moment. Schweiß
Die Codierungsstandardprüfung kann zum Zeitpunkt des Speicherns mit VS-Code automatisch überprüft werden, der Test muss jedoch manuell ausgeführt werden. Ursprünglich möchte ich, dass der Test automatisch ausgeführt wird, wenn das lokale Repository festgeschrieben und das Remote-Repository gepusht wird. Letzteres ist nützlich, wenn der Pull-Requester und der Committer unterschiedliche Personen sind, und es scheint, dass es heutzutage beliebt ist, Travis CI vor und GitHub-Aktionen zu verwenden.
Für die persönliche Entwicklung scheint es, dass nur automatische Tests zum Zeitpunkt des Festschreibens des lokalen Repositorys ausreichen. Stellen Sie es also ein. Mit der Hook-Funktion des lokalen git-Befehls scheint dies eine gute Möglichkeit zu sein, die Ausführung mit dem Hook-Skript Pre-Commit zu testen. Erstellen Sie das Projekt home /.git/hooks/pre-commit mit der folgenden Ausführungsberechtigung. Beachten Sie, dass dieses Skript nicht der Zuständigkeit von VS Code unterliegt. Vergessen Sie daher nicht, die Aktivierung zu schreiben.
pre-commit
#!/bin/sh
source .pyvenv/bin/activate
python -m pytest
Wenn Sie jetzt ein Commit für ein lokales Repository in VSCode durchführen, wird der Test automatisch ausgeführt und das Commit wird abgebrochen, wenn der Test fehlschlägt. Es ist ein Erfolg.