Pourquoi «pip install» dans Python déclenche-t-il une SyntaxError?


232

J'essaie d'utiliser pip pour installer un package. J'essaie d'exécuter à pip installpartir du shell Python, mais j'obtiens un SyntaxError. Pourquoi ai-je cette erreur? Comment utiliser pip pour installer le package?

>>> pip install selenium
              ^
SyntaxError: invalid syntax

Réponses:


298

pip est exécuté à partir de la ligne de commande, pas de l'interpréteur Python. Il s'agit d'un programme qui installe des modules, vous pouvez donc les utiliser à partir de Python. Une fois que vous avez installé le module, vous pouvez ouvrir le shell Python et faire import selenium.

Le shell Python n'est pas une ligne de commande, c'est un interpréteur interactif. Vous tapez du code Python dedans, pas des commandes.


2
Merci pour la clarification, mais je n'arrive toujours pas à le faire fonctionner. Où est-il exactement? Cela me donne une erreur "pip n'est pas reconnu" (parce que je ne suis pas le bon dir). Il a été installé dans \ site-packages mais je le recherche et je ne trouve aucun pip.exe
Nacht

25
@Nacht - pipsera dans le répertoire des scripts de votre installation python, vous voudrez donc l'ajouter à votre chemin. Ajoutez C:\Python32\scriptsà votre PATH. Modifiez le chemin si nécessaire en fonction de l'emplacement d'installation.
wkl

3
En fait, pip.exe dans Windows est un script python comme les autres dans le répertoire / scripts, mais enveloppé dans exe pour l'exécuter avec l'interpréteur python par défaut. En ouvrant pip.exe avec 7-zip, vous pouvez voir les principaux modules .py important pip, sys et re ... (Et vous y trouverez la réponse comment l'exécuter dans un shell python) -> pip est un habitué module python. N'oubliez pas que Windows n'était pas la première plate-forme prenant en charge Python, Linux l'était, et que Python fait partie du système d'exploitation.
Zydnar

1
Je sais que pour moi, je devais le faire à partir de la ligne de commande (pas de la ligne de commande python). C'était après avoir changé le répertoire en l'emplacement de python.exe et ensuite nécessaire de mettre le type de fichier sur pip3. Dans mon cas, j'étais après les demandes de travail HTTP. À savoir: les demandes d'installation de python pip3.exe <--- cela a fonctionné parfaitement, a répété la même chose pour le module
pytz

106

Utilisez la ligne de commande, pas le shell Python (DOS, PowerShell sous Windows).

C:\Program Files\Python2.7\Scripts> pip install XYZ

Si vous avez installé Python dans votre PATH à l'aide des derniers programmes d'installation, vous n'avez pas besoin d'être dans ce dossier pour exécuter pip

Terminal sous Mac ou Linux

$ pip install XYZ

3
Merci d'avoir inclus le C: ...., m'a aidé à réaliser où j'avais besoin de cd car vous ne pouvez pas simplement ouvrir la ligne de commande et taper pip.
hammythepig

2
Pour info, l'installation de Python que je viens de faire n'a PAS défini le PATH. J'ai dû le faire manuellement, en pointant vers le chemin d'installation dans%APPDATA%
UuDdLrLrSs

61

Comme @sinoroc l'a suggéré, la manière correcte d'installer un package via pip utilise un processus distinct car pip peut provoquer la fermeture d'un thread ou peut nécessiter un redémarrage de l'interpréteur pour charger le nouveau package installé, c'est donc la bonne façon d'utiliser l'API: subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])mais puisque Python permet pour accéder à l'API interne et vous savez ce que vous utilisez l'API car vous voudrez peut-être utiliser l'API interne de toute façon, par exemple. si vous créez votre propre gestionnaire de packages GUI avec des ressources alternatives comme https://www.lfd.uci.edu/~gohlke/pythonlibs/

La soulution suivante est HORS DATE, au lieu de voter en aval, suggérez des mises à jour. voir https://github.com/pypa/pip/issues/7498 pour référence.


Mise à jour : Depuis la version pip 10.x il n'y a pas plus get_installed_distributions()ou mainméthode sous import pip utiliser à la place import pip._internal as pip .

MISE À JOUR ca. v.18 get_installed_distributions() a été supprimé. Au lieu de cela, vous pouvez utiliser un générateur freezecomme celui-ci:

from pip._internal.operations.freeze import freeze

print([package for package in freeze()])

# eg output ['pip==19.0.3']


Si vous souhaitez utiliser pip à l'intérieur de l'interpréteur Python, essayez ceci:

import pip

package_names=['selenium', 'requests'] #packages to install
pip.main(['install'] + package_names + ['--upgrade']) 
# --upgrade to install or update existing packages

Si vous devez mettre à jour chaque package installé, utilisez ce qui suit:

import pip

for i in pip.get_installed_distributions():
    pip.main(['install', i.key, '--upgrade'])

Si vous souhaitez arrêter l'installation d'autres packages en cas d'échec de l'installation, utilisez-le en un seul pip.main([])appel:

import pip

package_names = [i.key for i in pip.get_installed_distributions()]
pip.main(['install'] + package_names + ['--upgrade'])

Remarque : Lorsque vous installez à partir de la liste dans le fichier avec -r/ --requirementparamètre, vous n'avez PAS besoin de la fonction open ().

pip.main(['install', '-r', 'filename'])

Avertissement : Certains paramètres aussi simples --helppeuvent entraîner l'arrêt de l'interpréteur python.

Curiosité: En utilisant, pip.exevous utilisez de toute façon l'interpréteur python et le module pip. Si vous décompressez pip.exeou pip3.exeque ce soit python 2.x ou 3.x, à l'intérieur se trouve le même fichier __main__.py:

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

5
Cela fonctionne dans le shell Python, donc je pense que ce devrait être la réponse acceptée.
François M.

5
C'est exactement ce que j'espérais trouver en recherchant ce problème sur Google.
Andrew Brēza

1
Excellente réponse, et elle devrait certainement être incluse ici, mais je ne suis pas d'accord que ce soit la réponse acceptée, car l'utilisateur essayait clairement de faire fonctionner la syntaxe désormais omniprésente "pip install". Étant donné que cette syntaxe ne fonctionnera pas avec cette méthode, elle ne résout pas directement ce problème. Cela peut être plus utile que la réponse acceptée :)
Dan

Aucune idée de ce que signifiait vraiment OP, mais cette réponse était vraiment tardive, donc ce n'est pas important si c'est accepté ici.
Zydnar

@Zydnar, d'accord - ma réponse a été adressée à François, qui a déclaré que cela devrait être la réponse acceptée. J'ai posté mon raisonnement pour savoir pourquoi. Cela dit, je pense toujours que c'est un excellent article.
Dan

53

Pour exécuter pip dans Python 3.x, suivez simplement les instructions sur la page de Python: Installation des modules Python .

python -m pip install SomePackage

Notez que cela est exécuté à partir de la ligne de commande et non du shell python (la raison de l'erreur de syntaxe dans la question d'origine).


1
Je reçois toujours une syntaxe non valide. J'utilise IPython sur un PC Windows 10. Des pensées?
DataGirl

Cette page contient des instructions pour installer IPython: ipython.readthedocs.io/en/stable/install/index.html $ pip install ipython. Vraisemblablement, cela se traduirait par $ python -m pip install ipython
Dan

1
Cela ne répond à rien sur l'erreur de syntaxe
OneCricketeer

Cela était déjà couvert par d'autres réponses, mais je l'ai ajouté maintenant. Ma réponse était juste un supplément pour 3.x.
Dan

a travaillé pour moi sur Windows 10 - m'a également conseillé de mettre à niveau pip conformément au commentaire précédent :)
Kdean571

2

Au début, moi aussi, j'ai rencontré ce même problème, j'ai installé python et lorsque j'exécute la pipcommande, il me lançait une erreur comme indiqué sur la photo ci-dessous.

entrez la description de l'image ici

Assurez-vous que le chemin du pip est ajouté dans les variables d'environnement. Pour moi, le chemin d'installation de python et pip est ::
Python: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\
pip: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\Scripts
Ces deux chemins ont été ajoutés au chemin dans les variables d'environnement.

Maintenant, ouvrez une nouvelle fenêtre cmd et tapez pip, vous devriez voir un écran comme ci-dessous.

entrez la description de l'image ici

Tapez maintenant pip install <<package-name>>. Ici, j'installe le package spyder, donc ma déclaration de ligne de commande sera la même pip install spyderet voici mon écran en cours d'exécution.

entrez la description de l'image ici

et j'espère que nous en avons fini avec ça !!


1
Cela ne répond pas à la question.
sinoroc

0

vous devez le saisir en cmd et non dans IDLE. becuse IDLE n'est pas une invite de commande si vous souhaitez installer quelque chose à partir d'IDLE, tapez ceci

>>>from pip.__main__ import _main as main
>>>main(#args splitted by space in list example:['install', 'requests'])

cela appelle pip comme pip <commands>dans le terminal. Les commandes seront séparées par des espaces que vous y faites.


C'est une réponse obsolète depuis environ la version 10.0 de pip. ImportError: cannot import name mainen utilisant pip v19.0.3
Zydnar

-1

Par programme, ce qui suit fonctionne actuellement . Je vois toutes les réponses après 10.0 et toutes, mais aucune n'est la bonne pour moi. Au sein de Kaggle à coup sûr, cette approche fonctionne

from pip._internal import main as _main

package_names=['pandas'] #packages to install
_main(['install'] + package_names + ['--upgrade']) 

pourquoi ne pas utiliser jusy: depuis pip .__ main__ import _main?
Matthijs990

-3

Essayez de mettre à niveau pip avec la commande ci-dessous et réessayez

python -m pip install -U pip

une mise à jour de pip ne le laissera pas fonctionner dans le shell python
Matthijs990
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.