Dieser Artikel dient zum Erstellen einer Entwicklungsumgebung für "Python + Pipenv + VS Code".
Es wurde von einem Ingenieur mit einjähriger Erfahrung in Python geschrieben, sodass Sie die Kultur von Python möglicherweise nicht verstehen können, aber bitte beachten Sie dies.
Die Paketverwaltung ist erforderlich, wenn der Quellcode als Team verwaltet wird. Durch das Erstellen derselben Betriebsumgebung werden die Kommunikationskosten gesenkt.
So eine natürliche Sache. .. Ich denke, dass.
Paketverwaltung ist für mich alltäglich, da ich nur App-Entwicklung betrieben habe, Python jedoch nicht nur auf App-Entwicklung beschränkt ist, sondern auch für die Datenwissenschaft und die Automatisierung kleiner Aufgaben verwendet wird. Daher besteht Bedarf an Paketverwaltung. Mir ist aufgefallen, dass die Wahrnehmung von für jeden Entwickler unterschiedlich ist.
Die Tatsache, dass der Standard-Paketmanager in der Python-Welt nicht existiert (was ich denke), führt auch dazu, dass das Image der Paketverwaltung von Entwickler zu Entwickler unterschiedlich ist.
Im Fall von Javascript gibt es npm und Garn, und ich denke, es ist die Kultur von Javascript, Code unter der Voraussetzung der Paketverwaltung zu schreiben. Auf der anderen Seite hat Python Pip als berühmten Paketmanager, aber für mich, der npm verwendet hat, fühlt sich pip sehr schlecht an.
Ich habe kürzlich pipenv in mein Team eingeführt und festgestellt, dass es funktioniert. Daher werde ich schreiben, wie eine Python-Projektumgebung mit pipenv erstellt wird.
Wenn Sie sofort ein Basisprojekt mit Pipenv-Konfiguration möchten, finden Sie es auf github.
Wenn Sie Pipenv bereits auf dem globalen Pip installiert haben, können Sie sofort versuchen, das oben genannte Repository zu klonen und einen Komponententest auszuführen. Die Installationsmethode ist wie folgt.
git clone https://github.com/michiharu/PythonProjectStarterKit.git
cd PythonProjectStarterKit
pipenv install --dev --pre
pipenv run test
Vanilla vs Anaconda
Es scheint, dass das Standardinstallationsprogramm Python "Vanilla Python" heißt. Wir gehen davon aus, dass Python mit dem Official Page Installer installiert wird.
Anaconda ist praktisch, aber meiner Meinung nach macht es für die Ausführungsumgebung nicht viel Sinn. Wenn Sie ein App-Entwickler sind, müssen Sie die Mindestkonfiguration der Python-Ausführungsumgebung kennen.
Es scheint gut zu sein, Vanilla für die Anwendungsentwicklung und Anaconda für die Datenwissenschaft zu kennen. Die folgenden Artikel waren sehr hilfreich beim Erstellen der Python-Umgebung.
Python-Umgebungskonstruktions-Windows
Wenn Sie diesen Artikel lesen und die Python-Umgebung neu erstellen, wird empfohlen, die von Ihnen verwendete Bibliothek in einer Textdatei auszugeben.
pip freeze > requirememts.txt
Wählen Sie auf der offiziellen Python-Seite "Dateien> webbasiertes Windows x86-64-Installationsprogramm" aus und wählen Sie Laden Sie das Installationsprogramm herunter.
Wenn Sie das Installationsprogramm ausführen, wird das Kontrollkästchen "Möchten Sie den Pfad zu Python zur Systemumgebungsvariablen hinzufügen?" Angezeigt. Überprüfen Sie dies unbedingt vor der Installation.
Öffnen Sie eine Eingabeaufforderung und gehen Sie wie folgt vor:
python --version
Das Verfahren zur Verwendung von pipenv wird unten erläutert.
Sie können es mit dem folgenden Befehl verwenden.
pip install pipenv
Wenn die Installation abgeschlossen ist, drücken Sie den Befehl pipenv
, um eine Liste der Befehle anzuzeigen, die mit pipenv ausgeführt werden können.
Das Standardverhalten von pipenv besteht darin, eine virtuelle Umgebungsressource in ".virtualenvs" im Verzeichnis USER zu erstellen, das vom Projektverzeichnis getrennt ist. Dies ist unpraktisch, da beim Überprüfen der Bibliothek der virtuellen Umgebung nicht sofort darauf zugegriffen werden kann. Aktivieren Sie daher die Einstellung, um in den Einstellungen der Systemumgebungsvariablen eine virtuelle Umgebung im Projekt zu erstellen.
PIPENV_VENV_IN_PROJECT=true
Das Obige ist die Umgebungskonstruktion zur Vorbereitung eines Projekts.
Wenn Sie ".vscode" festlegen, zeigt VSCode möglicherweise den Dialog "Möchten Sie installieren?" An. Wir empfehlen, nicht über diesen Dialog zu installieren.
Der Grund dafür ist, dass die Pip-Datei nicht aktualisiert wird, da das automatisch ausgeführte Skript global mit pip anstelle von pipenv installiert wird, sofern nicht die unten beschriebene Methode zum Hinzufügen von Paketen verwendet wird. Installieren Sie Linter und Formatter mit pipenv.
settings.json
Um die Linter- und Formatter-Einstellungen für vscode freizugeben, sind die folgenden Einstellungen in .vscode / settings.json
erforderlich.
{
"python.venvPath": ".venv",
"python.pythonPath": ".venv\\Scripts\\python.exe",
"python.envFile": "${workspaceFolder}/.env",
"python.linting.enabled": true,
"python.linting.pylintEnabled": false,
"python.linting.flake8Enabled": true,
"python.linting.mypyEnabled": true,
"python.formatting.provider": "black",
"python.linting.flake8Args": ["--ignore=E501,W503"],
"editor.formatOnSave": true
}
Folgendes ist mit den obigen Einstellungen möglich.
Um Umgebungsvariablen beim Ausführen von Python hinzuzufügen, schreiben Sie Folgendes in die ENV-Datei. Der Standort befindet sich direkt unter dem Projekt.
PYTHONPATH=".\src;"
PYTHONPATH fügt einen Ort hinzu, an dem nach Modulen gesucht werden kann, wenn Python ausgeführt wird. Sie können mehrere durch Semikolon getrennte Elemente schreiben.
Formatierer schwarz ausgewählt. black selbst behauptet zu sein "Black ist der kompromisslose Python-Code-Formatierer." Gemäß
Die Einstellungen wurden ausführlich über das Format besprochen. Verwenden Sie es daher unverändert. Machen wir uns keine Gedanken mehr über das Format? Das spart Zeit und bringt vor allem Energie ein.
... anscheinend ...
Wenn daher ein Regelkonflikt mit flake8 besteht, wird Schwarz Vorrang eingeräumt. Lassen Sie flake8 die widersprüchlichen Regeln ignorieren.
python.linting.flake8Args
ignoriert einige Regeln von flake8, um Regelkonflikte mit Schwarz zu vermeiden.
Zum Beispiel ist "--ignore = E501" eine Einstellung, mit der die Regel von Flake8 mit maximal 79 Zeichen pro Zeile ignoriert wird (Schwarz hat maximal 88 Zeichen pro Zeile). Ich denke, es gab einige andere Regeln, die mit Schwarz in Konflikt standen, als die hier als Beispiel festgelegte. Wenn Sie jedoch einen Flake8-Fehler in Bezug auf das Format erhalten, fügen Sie ihn bitte jedes Mal hinzu.
Führen Sie den folgenden Befehl aus. Die Python-Version kann feiner eingestellt werden. Wenn die entsprechende Version von Python nicht installiert ist, tritt ein Fehler auf. In diesem Fall installieren Sie bitte über das Standardinstallationsprogramm.
pipenv --python 3
Wenn Sie den Befehl ausführen, werden die folgenden Dateien zum Projektverzeichnis hinzugefügt.
pipenv install [package]
pipenv install --dev [package]
pipenv install --dev mypy flake8 black isort --pre
--dev
ist eine Option zur Verwaltung als Entwicklungspaket. --pre
ist eine Option, mit der vorveröffentlichte Pakete installiert werden können. Schwarz wird auf der offiziellen Seite als "HINWEIS: Dies ist ein Beta-Produkt" beschrieben. Wenn keine Voroption vorhanden ist, tritt ein Fehler auf, der darauf hinweist, dass die Aktualisierung von Pipfile.lock fehlgeschlagen ist.
Wenn das geklonte Projekt "Pipfile" hat, generieren Sie ".venv" mit dem folgenden Befehl und installieren Sie dort die erforderlichen Module.
//Pipfile[packages]Fügen Sie das in beschriebene Paket hinzu
pipenv install
//Pipfile[dev-packages]Fügen Sie das in beschriebene Paket hinzu
pipenv install --dev --pre
Sie können das Paket von require.txt
mit dem Argument r installieren.
pipenv install -r ./requirements.txt
Ich denke, es ist eine sprachunabhängige Kultur, den Quellcode in das Verzeichnis src
zu stellen.
Die Verzeichnisstruktur unter src ist wie folgt.
src
├── package
│ ├── foo_module.py
│ ├── :
│ └── xxx.py
└── tests
├── __init__.py
├── test_foo_module.py
├── :
└── test_xxx.py
Um foo_module.py aus test_foo_modules.py zu importieren, schreiben Sie wie folgt.
import package.foo_module
Der Test kann mit dem folgenden Befehl ausgeführt werden:
//Zur Stapelausführung
pipenv run python -m unittest discover src -v
Wenn Sie "__init __. Py" nicht in das Testverzeichnis einfügen, tritt ein Fehler auf, da der Testcode mit dem obigen Befehl nicht von unittest gefunden werden kann.
Darüber hinaus können häufig verwendete Befehle als Skripte registriert werden. Fügen Sie der Pipfile die folgenden Elemente hinzu.
[scripts]
test = "python -m unittest discover tests -v"
isort = "python -m isort -m 3 ."
Mit dieser Einstellung können Sie mit dem folgenden Befehl testen.
pipenv run test
Die zweite hinzugefügte Isort ist ein auf Importe spezialisierter Formatierer. Da das bisher eingeführte Schwarz den Import nicht berührt, bleibt das Importformat der Sortierung überlassen.
pipenv run isort
Das ist alles für das Verfahren zum Erstellen der Umgebung für ein Python-Projekt.
Recommended Posts