Cet article concerne la création d'un environnement de développement pour "Python + Pipenv + VS Code".
Il est écrit par un ingénieur avec une année d'expérience en Python, vous ne pourrez donc peut-être pas comprendre la culture de Python, mais soyez conscient de cela.
La gestion des packages est requise lors de la gestion du code source en équipe. La création du même environnement d'exploitation réduit les coûts de communication.
Une chose tellement naturelle. .. Je pense que.
La gestion des packages est courante pour moi car je n'ai fait que du développement d'applications, mais Python ne se limite pas au développement d'applications et est également utilisé pour la science des données et l'automatisation de petites tâches, il est donc nécessaire de gérer les packages. J'ai remarqué que la perception de est différente pour chaque développeur.
De plus, le fait que le gestionnaire de packages standard n'existe pas dans le monde Python (ce que je pense) fait également varier l'image de la gestion des packages d'un développeur à l'autre.
Dans le cas du javascript, il y a npm et yarn, et je pense que c'est la culture du javascript de commencer à écrire du code sur le principe de la gestion des paquets. D'un autre côté, Python a pip comme gestionnaire de paquets bien connu, mais pour moi qui ai utilisé npm, pip me semble très pauvre.
J'ai récemment présenté pipenv à mon équipe et j'ai trouvé que cela fonctionnait, alors j'écrirai comment créer un environnement de projet Python à l'aide de pipenv.
Si vous voulez un projet de base avec la configuration pipenv tout de suite, vous pouvez le trouver sur github.
Si vous avez déjà installé Pipenv sur le pip global, vous pouvez immédiatement essayer de cloner le référentiel ci-dessus à l'exécution d'un test unitaire. La méthode d'installation est la suivante.
git clone https://github.com/michiharu/PythonProjectStarterKit.git
cd PythonProjectStarterKit
pipenv install --dev --pre
pipenv run test
Vanilla vs Anaconda
Il semble que l'installateur standard Python s'appelle "Vanilla Python". Nous supposerons que Python est installé à l'aide du programme d'installation de la page officielle.
Anaconda est pratique, mais à mon avis, cela n'a pas beaucoup de sens pour l'environnement d'exécution. Si vous êtes un développeur d'applications, vous devez comprendre la configuration minimale de l'environnement d'exécution Python.
Il semble bon de connaître Vanilla pour le développement d'applications et Anaconda pour la science des données. Les articles suivants ont été très utiles pour créer l'environnement Python.
Construction de l'environnement Python-Windows
Lors de la lecture de cet article et de la reconstruction de l'environnement Python, il est recommandé d'exporter la bibliothèque que vous avez utilisée dans un fichier texte.
pip freeze > requirememts.txt
Depuis la page officielle de Python, sélectionnez «Fichiers> Programme d'installation Web Windows x86-64» et sélectionnez Téléchargez le programme d'installation.
Lorsque vous exécutez le programme d'installation, une case à cocher indique "Voulez-vous ajouter le chemin vers python à la variable d'environnement système?" Assurez-vous de vérifier avant l'installation.
Ouvrez une invite de commande et procédez comme suit:
python --version
La procédure d'utilisation de pipenv est expliquée ci-dessous.
Vous pouvez l'utiliser avec la commande suivante.
pip install pipenv
Lorsque l'installation est terminée, appuyez sur la commande pipenv
pour voir une liste de commandes pouvant être exécutées avec pipenv.
--user
pour installer avec les privilèges utilisateur. Je vois un article que vous pouvez utiliser en passant Path à la variable d'environnement utilisateur avec une option, mais même si vous l'essayez plusieurs fois, si vous installez avec l'option --user
, passez Path à la variable d'environnement système Sans cela, je ne pourrais pas utiliser la commande pipenv. Je comprends que pip install pipenv est également installé avec des privilèges d'utilisateur, car Python lui-même est installé avec des privilèges d'utilisateur par défaut. En d'autres termes, je suppose que l'option --user
est une option valide si Python est installé pour une utilisation à l'échelle du système. Si vous avez les bonnes connaissances, veuillez commenter.Le comportement par défaut de pipenv est de créer une ressource d'environnement virtuel dans .virtualenvs
dans le répertoire USER, séparé du répertoire du projet.
Cela n'est pas pratique car il n'est pas accessible immédiatement lors de la vérification de la bibliothèque de l'environnement virtuel, activez donc le paramètre pour créer un environnement virtuel dans le projet dans les paramètres de la variable d'environnement système.
PIPENV_VENV_IN_PROJECT=true
Ce qui précède est la construction de l'environnement en vue de la réalisation d'un projet.
Si vous définissez .vscode
, VSCode peut afficher la boîte de dialogue" Voulez-vous installer? ". Nous ne recommandons pas l'installation à partir de cette boîte de dialogue.
La raison est que le Pipfile ne sera pas mis à jour car le script exécuté automatiquement sera installé globalement en utilisant pip au lieu de pipenv à moins que la méthode d'ajout de package décrite ci-dessous ne soit utilisée. Installez Linter et Formatter avec pipenv.
settings.json
Afin de partager les paramètres Linter et Formatter avec vscode, les paramètres suivants sont requis dans .vscode / settings.json
.
{
"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
}
Ce qui suit est possible avec les paramètres ci-dessus.
.env
Afin d'ajouter des variables d'environnement lors de l'exécution de python, écrivez ce qui suit dans le fichier .env. L'emplacement est directement sous le projet.
PYTHONPATH=".\src;"
PYTHONPATH ajoute un emplacement pour rechercher des modules lors de l'exécution de python. Vous pouvez écrire plusieurs éléments séparés par des points-virgules.
Le formateur a sélectionné le noir. Black lui-même prétend être "Black est le formateur de code Python sans compromis." Selon
Les paramètres ont fait l'objet d'une discussion approfondie sur le format, veuillez donc l'utiliser tel quel. Arrêtons-nous de nous soucier du format? Cela fait gagner du temps et, surtout, y met de l'énergie.
... Apparemment ...
Par conséquent, s'il y a un conflit de règle avec flake8, le noir aura la priorité. Autrement dit, laissez flake8 ignorer les règles contradictoires.
python.linting.flake8Args
est configuré pour ignorer certaines règles de flake8 pour éviter les conflits de règles avec le noir.
Par exemple, --ignore = E501
est un paramètre pour ignorer le maximum de 79 caractères par ligne de flake8 (le noir a un maximum de 88 caractères par ligne). Je pense qu'il y avait d'autres règles qui étaient en conflit avec le noir autres que celle définie ici comme exemple, mais si vous obtenez une erreur flake8 liée au format, veuillez l'ajouter à chaque fois.
Exécutez la commande suivante. La version Python peut être définie plus finement. Si la version correspondante de Python n'est pas installée, une erreur se produira. Dans ce cas, veuillez installer à partir du programme d'installation standard.
pipenv --python 3
Lorsque vous exécutez la commande, les fichiers suivants seront ajoutés au répertoire du projet.
pipenv install [package]
pipenv install --dev [package]
pipenv install --dev mypy flake8 black isort --pre
--dev
est une option à gérer comme un package de développement. --pre
est une option qui permet l'installation de packages pré-publiés. le noir est décrit sur la page officielle comme "REMARQUE: Ceci est un produit bêta", et s'il n'y a pas de pré-option, une erreur se produira indiquant que la mise à jour de Pipfile.lock a échoué.
Si le projet cloné a Pipfile
, utilisez la commande suivante pour générer .venv
et y installer les modules requis.
//Pipfile[packages]Ajoutez le package décrit dans
pipenv install
//Pipfile[dev-packages]Ajoutez le package décrit dans
pipenv install --dev --pre
Vous pouvez installer le package à partir de requirements.txt
en utilisant l'argument r.
pipenv install -r ./requirements.txt
Je pense que c'est une culture indépendante de la langue de mettre le code source dans le répertoire src
.
La structure des répertoires sous src est la suivante.
src
├── package
│ ├── foo_module.py
│ ├── :
│ └── xxx.py
└── tests
├── __init__.py
├── test_foo_module.py
├── :
└── test_xxx.py
Pour importer foo_module.py depuis test_foo_modules.py, écrivez comme suit.
import package.foo_module
Le test peut être exécuté avec la commande suivante:
//Pour l'exécution par lots
pipenv run python -m unittest discover src -v
Si vous ne placez pas __init __. Py
dans le répertoire des tests, une erreur se produira car le code de test ne peut pas être trouvé à partir d'unittest avec la commande ci-dessus.
De plus, les commandes fréquemment utilisées peuvent être enregistrées en tant que scripts. Ajoutez les éléments suivants au Pipfile.
[scripts]
test = "python -m unittest discover tests -v"
isort = "python -m isort -m 3 ."
Avec ce paramètre, vous pouvez tester avec la commande suivante.
pipenv run test
Le second isort ajouté est un formateur spécialisé dans les importations. Comme le noir introduit jusqu'à présent ne touche pas à l'importation, le format d'importation est laissé à l'écart.
pipenv run isort
C'est tout pour la procédure de création de l'environnement d'un projet Python.
Recommended Posts