Je n'ai pas vraiment compris comment utiliser Pipenv, c'est donc un mémo lorsque j'ai essayé différents mouvements en lisant principalement le document officiel.
Puisque la relation entre chaque commande est illustrée, je l'écrirai dans ce flux. Les numéros de la figure correspondent aux numéros des paragraphes de cet article.
Pipenv
Dans le passé, les environnements virtuels Python étaient souvent construits avec pip et verticalenv, mais Pipenv est un outil qui permet de les gérer facilement tous ensemble.
Pipenv générera deux fichiers. En gros, vous ne les modifiez pas directement, mais je supprimerai chaque rôle afin de comprendre la raison et l'état de l'environnement virtuel. Chaque fichier a les rôles et propriétés suivants.
Pipfile
Pipfile.lock
Jetons un coup d'œil à chaque commande et comment l'utiliser.
Installez Pipenv.
$ brew install pipenv
Il peut également être installé avec pip.
$ pip install pipenv
Initialisez l'environnement virtuel en spécifiant la version Python. Si la version spécifiée n'existe pas, elle sera installée via pyenv.
$ pipenv --python 3.6
Lorsque l'environnement virtuel est initialisé, un fichier appelé Pipfile est généré.
Vous pouvez installer le package avec la commande install.
S'il y a des fichiers Pipfile et Pipfile.lock dans la même hiérarchie où la commande est exécutée, l'environnement sera construit en faisant référence à ces fichiers.
$ pipenv install
Vous pouvez créer un environnement géré par Piprnv à partir de requirements.txt même s'il n'est pas géré à l'origine par Pipenv.
$ pipenv install -r ./requirements.txt
S'il n'y a pas de fichier de référence, l'environnement sera construit de la même manière que pipenv --python <version>
.
$ pipenv install --python 3.6
Pour la commande d'installation, un fichier Pipfile.lock est généré en plus du Pipfile. Jetons un coup d'œil au contenu.
Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages] //Vide car je n'ai pas encore installé le package
[requires]
python_version = "3.6" //Version 3.6 est spécifié
Pipfile.lock
{
"_meta": {
"hash": {
"sha256": "415dfdcb118dd9bdfef17671cb7dcd78dbd69b6ae7d4f39e8b44e71d60ca72e7"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.6"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {}, //Vide car je n'ai pas encore installé le package
"develop": {}
}
J'ajouterai des pandas à titre d'essai.
$ pipenv install pandas
Ensuite, chacun sera ajouté comme suit.
Pipfile
[packages]
pandas = "*" //Aucune version spécifiée
Pipfile.lock
"default": {
"numpy": {
"hashes": [
"sha256:03bbde29ac8fba860bb2c53a1525b3604a9b60417855ac3119d89868ec6041c3",
(Omis)
"sha256:f6a7421da632fc01e8a3ecd19c3f7350258d82501a646747664bae9c6a87c731"
],
"version": "==1.18.0"
},
"pandas": {
"hashes": [
"sha256:00dff3a8e337f5ed7ad295d98a31821d3d0fe7792da82d78d7fd79b89c03ea9d",
(Omis)
"sha256:ee50c2142cdcf41995655d499a157d0a812fce55c97d9aad13bc1eef837ed36c"
],
"index": "pypi",
"version": "==0.25.3"
},
"python-dateutil": {
"hashes": [
"sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c",
"sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"
],
"version": "==2.8.1"
},
"pytz": {
"hashes": [
"sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d",
"sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be"
],
"version": "==2019.3"
},
"six": {
"hashes": [
"sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd",
"sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"
],
"version": "==1.13.0"
}
},
Il spécifie également les packages et les versions dont pandas dépend en interne, tels que numpy et python-dateutil.
Si vous souhaitez spécifier la version et l'installer, procédez comme suit.
$ pipenv install pandas==0.15.0 //Spécifiez une version spécifique
La méthode de spécification de la version n'est pas limitée à la version spécifique, mais il est possible d'exclure la version spécifiée ou supérieure et la version spécifique. Pour plus de détails, veuillez vous référer au Document officiel.
Utilisez la commande de désinstallation pour désinstaller le package installé.
$ pipenv uninstall pandas
Ensuite, Pipfile et Pipfile.lock seront supprimés comme ajoutés par l'installation.
Utilisez la commande lock pour mettre à jour le fichier Pipfile.lock à partir du contenu du Pipfile.
$ pipenv lock
En particulier, si vous ne spécifiez pas la version lorsque pipenv install
, vous utiliserez cette commande lors de la mise à jour du paquet.
La commande sync est utilisée pour appliquer le contenu de Pipfile.lock à un environnement virtuel.
$ pipenv sync
Je pense que cette commande est souvent utilisée comme un ensemble avec la commande lock.
La commande update se verrouille et se synchronise en même temps.
$ pipenv update //Faites pour tous les forfaits
$ pipenv update pandas //Il est également possible de spécifier le package
Ajoutez l'option --dry-run
pour voir quels paquets peuvent être mis à jour (obsolètes).
$ pipenv update --dry-run
✔ Success!
//Ancienne version (0.15.J'ai mis des pandas de 0), donc la nouvelle version (0).25.3) vous dira qu'il est disponible
Skipped Update of Package pandas: 0.15.0 installed, 0.25.3 available.
Si vous spécifiez la version au moment de pipenv install
, l'installation de la nouvelle version sera ignorée même s'il n'y a pas d'option --dry-run
. Dans ce cas, spécifiez une version arbitraire avec pipenv install
et effectuez l'installation par écrasement.
Utilisez la commande run pour exécuter des commandes dans un environnement virtuel. Affichons la liste des packages installés à titre d'essai.
$ pipenv run pip list
Package Version
--------------- -------
numpy 1.18.0
pandas 0.15.0
pip 19.3.1
python-dateutil 2.8.1
pytz 2019.3
setuptools 43.0.0
six 1.13.0
wheel 0.33.6
De plus, si vous enregistrez un script dans Pipfile, vous pouvez appeler ce script avec la commande run.
Pipfile
[scripts]
list = "pip list"
$ pipenv run list //Même résultat que pipenv run pip list
Utilisez la commande shell pour accéder à l'environnement virtuel.
$ pipenv shell
Si vous avez des packages dans votre environnement virtuel qui ne sont pas définis dans Pipfile.lock, vous pouvez les supprimer de l'environnement virtuel avec la commande clean.
Essayez pipenv uninstall pandas
après pipenv install pandas
, qui est sorti plus tôt, et exécutez la commande clean avec les paquets dont les pandas dépendent restent dans l'environnement virtuel.
$ pipenv run pip list
Package Version
--------------- -------
numpy 1.18.0 //Il existe encore des packages dont les pandas dépendent, comme numpy.
pip 19.3.1
python-dateutil 2.8.1
pytz 2019.3
setuptools 43.0.0
six 1.13.0
wheel 0.33.6
$ pipenv clean //Courir propre
Uninstalling six…
Uninstalling pytz…
Uninstalling python-dateutil…
Uninstalling numpy…
$ pipenv run pip list //Vérifiez le résultat du nettoyage
Package Version
---------- -------
pip 19.3.1
setuptools 43.0.0
wheel 0.33.6
Vous pouvez voir que les paquets dont dépendaient les pandas sont également fermement désinstallés.
La commande check vérifie les vulnérabilités de sécurité pour voir si l'environnement actuel répond aux exigences de PEP 508.
$ pipenv check
Si vous souhaitez voir les dépendances du package, utilisez la commande graph.
$ pipenv graph
pandas==0.15.0 //pandas est numpy, python-Il s'avère que cela dépend de dateutil et pytz
- numpy [required: >=1.7.0, installed: 1.18.0]
- python-dateutil [required: >=2, installed: 2.8.1]
- six [required: >=1.5, installed: 1.13.0] // python-Il s'avère que dateutil est encore plus dépendant de six
- pytz [required: >=2011k, installed: 2019.3]
Je pense que cela vous donne une vue d'ensemble de Pipenv. C'est persistant, mais je posterai à nouveau le diagramme associé au début.
Pipenv ressemble à toutes les bonnes choses, mais il semble avoir quelques inconvénients, tels que le fait d'être épicé lorsqu'il est combiné avec un docker et une installation lente. Comme autre alternative, je demanderai les noms des outils suivants, donc j'essaierai de les toucher bientôt.
Recommended Posts