J'installe des packages à partir de requirements.txt
pip install -r requirements.txt
Le requirements.txt
fichier lit:
Pillow
lxml
cssselect
jieba
beautifulsoup
nltk
lxml
est le seul package qui ne parvient pas à s'installer et cela conduit à tout échouer (résultats attendus comme indiqué par larsks dans les commentaires). Cependant, après lxml
échec, pip
continue de fonctionner et télécharge le reste des packages.
D'après ce que j'ai compris, la pip install -r requirements.txt
commande échouera si l'un des packages répertoriés dans le requirements.txt
fichier échoue à installer.
Y a-t-il un argument que je peux passer lors de l'exécution pip install -r requirements.txt
pour lui dire d'installer ce qu'il peut et d'ignorer les paquets qu'il ne peut pas, ou de quitter dès qu'il voit quelque chose échouer?
requirements.txt
il est probablement nécessaire , il est donc logique quepip
le package échoue si le package ne peut pas être installé. Si le code s'exécute de toute façon sans ce package, alors ce n'était guère une exigence. L'élagage aléatoire des packages ayant échouérequirements.txt
semble entraîner des problèmes avec les dépendances manquantes.pip install -r <some file>
flux de travail pour standardiser la création de l'environnement approprié.Réponses:
L'exécution de chaque ligne avec
pip install
peut être une solution de contournement.Remarque: le
-a
paramètre n'est pas disponible sous MacOS, donc old cat est plus portable.la source
cat requirements.txt | xargs -n 1 pip install
cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install
supprimer quoi que ce soit dans les commentaires et se débarrasser des lignes vides.xargs
, il y a l'-a
option flag, qui permet dexargs
lire les arguments à partir d'un fichier, donc cela peut être fait commexargs -n 1 -a requirements.txt pip install
. Empêche UUOC et plomberie excessiveFOR /F %k in (requirements.txt) DO pip install %k
-a
drapeau, pensez< requirements.txt xargs -n 1 pip install
, ou si vous ne le faites pas comme la redirection à l'avant,xargs -n 1 pip install < requirements.txt
. :-)Cette solution gère les lignes vides, les lignes d'espacement, les # lignes de commentaire, les # lignes de commentaire dans votre requirements.txt.
Pointe du chapeau à cette réponse pour la magie sed.
la source
pip freeze
place decat requirements.txt
.Pour les fenêtres:
version pip> = 18
version pip <18
la source
La
xargs
solution fonctionne mais peut avoir des problèmes de portabilité (BSD / GNU) et / ou être encombrante si vous avez des commentaires ou des lignes vides dans votre fichier d'exigences.En ce qui concerne le cas d'utilisation où un tel comportement serait requis, j'utilise par exemple deux fichiers d'exigences distincts, l'un qui ne répertorie que les dépendances principales qui doivent toujours être installées et un autre fichier avec des dépendances non essentielles qui sont dans 90% des cas pas nécessaire pour la plupart des cas d'utilisation. Ce serait l'équivalent de la
Recommends
section d'un paquet Debian.J'utilise le script shell suivant (nécessite
sed
) pour installer les dépendances facultatives :la source
Merci, Etienne Prothon pour les vitrines.
Mais, après la mise à niveau vers pip 18, le package pip n'expose pas main au public. Vous devrez peut-être changer de code comme celui-ci.
la source
Pour les fenêtres:
requirements.txt
fichier..py
extension, par exemple,install_packages.py
python install_packages.py
Vous pouvez ajouter d'autres paramètres dans la fonction d'installation. Comme:
main(['install'] + [str(package)] + ['--update'])
la source