Dans nodejs, je peux faire le npm install package --save-dev
pour enregistrer le paquet installé dans le paquet.
Comment puis-je obtenir la même chose avec le gestionnaire de paquets Python? Je voudrais enregistrer le nom du paquet et sa version dans, par exemple, requirements.pip
juste après avoir installé le paquet en utilisant quelque chose comme le pip install package --save-dev requirements.pip
.
Il n’y a pas d’équivalent avec pip
.
Le meilleur moyen est de pip install package && pip freeze > requirements.txt
Vous pouvez voir toutes les options disponibles sur leur page de documentation .
Si cela vous dérange vraiment, il ne serait pas trop difficile d’écrire un script bash personnalisé ( pips
) qui prend un argument -s
et se fige automatiquement dans votre fichier requirements.txt
.
Modifier 1
Depuis l’écriture de ceci, il n’y a pas eu de changement en fournissant une --save-dev
auto – --save-dev
similaire à NPM mais Kenneth Reitz (auteur de requests
et bien d’autres) a publié quelques informations sur un meilleur
Cette simple ligne est un sharepoint départ. Vous pouvez facilement créer une commande bash pour réutiliser le PACKAGE dans la ligne.
pip install PACKAGE && pip freeze | grep PACKAGE >> requirements.txt
La page de gestion des dépendances d’applications de Python recommande maintenant pipenv comme outil de gestion des dépendances. Il enveloppe pip
et, entre autres choses, fournit ce que vous demandez:
https://docs.pipenv.org/basics/#example-pipenv-workflow
$ pipenv install
Cela créera un Pipfile s’il n’en existe pas. S’il en existe un, il sera automatiquement modifié avec le nouveau package fourni.
Un Pipfile
est un équivalent direct de package.json
, tandis que Pipfile.lock
correspond à package-lock.json
.
J’ai fait un rapide hack sur pip
pour append l’option --save
pour installer / désinstaller les commandes.
S’il vous plaît jeter un oeil à mon blog pour plus d’informations sur ce hack: http://blog.abhiomkar.in/2015/11/12/pip-save-npm-like-behaviour-to-pip/
Installation (GitHub): https://github.com/abhiomkar/pip-save
J’espère que cela t’aides.
J’ai créé le package python qui entoure les classes de pip
réelles appelées pipm. Toutes les commandes pip
fonctionneront telles quelles, en plus elles seront enregistrées dans le fichier des exigences. Contrairement à pip-save
il peut gérer de nombreux fichiers et environnements (test, dev, production, etc.). Il a également la commande de mettre à jour toutes vos dépendances.
pipm install pkg-name
pipm install pkg-name --dev
pipm install pkg-name --test
pipm uninstall pkg-name
pipm update
pipm install
pipm install --dev
vous pouvez l’enregistrer manuellement dans un fichier Makefile (ou un fichier texte puis importé dans votre Makefile):
PYTHON=.venv/bin/python # path to pyphon PIP=.venv/bin/pip # path to pip SOURCE_VENV=. .venv/bin/activate install: virtualenv .venv $(SOURCE_VENV) && $(PIP) install -e PACKAGE $(SOURCE_VENV) && $(PIP) install -r requirements.txt # other required packages
puis lancez simplement make install
Que diriez-vous de faire une fonction shell pour ce faire? Ajouter le code ci-dessous à votre ~/.profile
ou ~/.bashrc
pips() { local pkg=$1 if [ -z "$1" ]; then echo "usage: pips " return 1 fi local _ins="pip install $pkg" eval $_ins pip freeze | grep $pkg -i >> requirements.txt }
puis lancez source ~/.profile
ou source ~/.bashrc
pour l’importer dans votre terminal actuel
Lorsque vous souhaitez installer && enregistrer un package, exécutez simplement, par exemple, les pips requests
. Une fois le paquet installé, sa version sera enregistrée dans requirements.txt
dans votre répertoire actuel.
J’utilise cette petite ligne de commande pour installer un paquet et enregistrer sa version dans requirements.txt
: pkg=package && pip install $pkg && echo $(pip freeze | grep -i $pkg) >> requirements.txt