Perché "pip install" in Python genera un SyntaxError?


232

Sto cercando di usare pip per installare un pacchetto. Provo a correre pip installdalla shell Python, ma ottengo un SyntaxError. Perché visualizzo questo errore? Come posso usare pip per installare il pacchetto?

>>> pip install selenium
              ^
SyntaxError: invalid syntax

Risposte:


297

pip viene eseguito dalla riga di comando, non dall'interprete Python. È un programma che installa moduli, quindi puoi usarli da Python. Dopo aver installato il modulo, puoi aprire la shell di Python e farlo import selenium.

La shell Python non è una riga di comando, è un interprete interattivo. Digiti il ​​codice Python in esso, non i comandi.


2
Grazie per il chiarimento, ma non riesco ancora a farlo funzionare. Dov'è esattamente? Mi sta dando un errore "pip non riconosciuto" (perché non sono la directory giusta). È stato installato in \ site-pacchetti ma sto pensando che non riesco a trovare alcun pip.exe
Nacht

25
@Nacht - pipsarà nella directory degli script della tua installazione di Python, quindi vorrai aggiungerlo al tuo percorso. Aggiungi C:\Python32\scriptsal tuo PATH. Modificare il percorso come necessario in base al luogo in cui è stato installato.
wkl,

3
In realtà pip.exe in Windows è uno script Python come altri nella directory / scripts, ma racchiuso in exe per eseguirlo con l'interprete Python predefinito. Aprendo pip.exe con 7-zip puoi vedere i principali .py importare pip, sys e re moduli ... (E lì troverai la risposta su come eseguirlo all'interno di una shell Python) -> pip è un normale modulo Python. Non dimenticare che Windows non era la prima piattaforma che supportava Python, Linux lo era, e lì Python fa parte del sistema operativo.
Zydnar,

1
So per me che ho dovuto farlo dalla riga di comando (non dalla riga di comando di Python). Ciò avveniva dopo aver modificato la directory nella posizione di python.exe e quindi era necessario inserire il tipo di file su pip3. Nel mio caso stavo cercando richieste di lavoro HTTP. Vale a dire: richieste di installazione di python pip3.exe <--- ha funzionato perfettamente, ripetuto lo stesso per il modulo
pytz

106

Utilizzare la riga di comando, non la shell Python (DOS, PowerShell in Windows).

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

Se hai installato Python nel tuo PATH usando gli ultimi installer, non devi essere in quella cartella per eseguire pip

Terminale in Mac o Linux

$ pip install XYZ

3
Grazie per aver incluso il C: ...., mi ha aiutato a capire dove dovevo fare il cd perché non puoi semplicemente aprire la riga di comando e digitare pip.
Hammythepig,

2
Cordiali saluti, l'installazione di Python che ho appena fatto NON ha impostato PATH. Ho dovuto farlo manualmente, indicando il percorso di installazione in%APPDATA%
UuDdLrLrSs

61

Come suggerito @sinoroc, il modo corretto di installare un pacchetto tramite pip sta usando un processo separato poiché pip può causare la chiusura di un thread o potrebbe richiedere un riavvio dell'interprete per caricare un nuovo pacchetto installato, quindi questo è il modo giusto di usare l'API: subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])ma poiché Python consente per accedere all'API interna e sai a cosa stai utilizzando l'API per cui potresti voler utilizzare l'API interna ad es. se stai creando il tuo gestore di pacchetti GUI con risorse alternative come https://www.lfd.uci.edu/~gohlke/pythonlibs/

L'anima che segue è FUORI DATA, invece di effettuare il downvoting suggerire aggiornamenti. consultare https://github.com/pypa/pip/issues/7498 per riferimento.


AGGIORNAMENTO : Dalla versione di pip 10.x non c'è più get_installed_distributions()o mainmetodo sotto import pip invece utilizzare import pip._internal as pip .

AGGIORNAMENTO ca. v.18 get_installed_distributions() è stato rimosso. Invece puoi usare un generatore freezecome questo:

from pip._internal.operations.freeze import freeze

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

# eg output ['pip==19.0.3']


Se si desidera utilizzare pip all'interno dell'interprete Python, provare questo:

import pip

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

Se è necessario aggiornare tutti i pacchetti installati, utilizzare quanto segue:

import pip

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

Se si desidera interrompere l'installazione di altri pacchetti in caso di installazione non riuscita, utilizzarlo in una sola pip.main([])chiamata:

import pip

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

Nota : quando si installa dall'elenco nel file con -r/ --requirementparametro NON è necessaria la funzione open ().

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

Avvertenza : alcuni parametri semplici --helppossono causare l'interruzione dell'interprete Python.

Curiosità: Usando usi pip.exeeffettivamente l'interprete python e il modulo pip comunque. Se decomprimi pip.exeo pip3.exeindipendentemente dal fatto che sia Python 2.xo 3.x, all'interno è presente il singolo file SAME __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
Funziona con la shell Python, quindi penso che dovrebbe essere la risposta accettata.
François M.,

5
Questo è esattamente quello che speravo di trovare quando cercavo su Google questo problema.
Andrew Brēza,

1
Ottima risposta, e dovrebbe sicuramente essere inclusa qui, ma non sono d'accordo che dovrebbe essere la risposta accettata, dal momento che l'utente stava chiaramente cercando di far funzionare la sintassi ormai onnipresente "pip install". Poiché tale sintassi non funzionerà con questo metodo, non risolve direttamente quel problema. Potrebbe essere più utile della risposta accettata però :)
Dan

Non ho idea di cosa significasse veramente OP, ma questa risposta è stata davvero una risposta tardiva, quindi non è importante se è accettata qui.
Zydnar,

@Zydnar, d'accordo - la mia risposta è stata a Francois, che ha affermato che questa dovrebbe essere la risposta accettata. Ho pubblicato il mio ragionamento sul perché no. Detto questo, penso ancora che questo sia un ottimo post.
Dan

53

Per eseguire pip in Python 3.x, basta seguire le istruzioni sulla pagina di Python: Installazione dei moduli Python .

python -m pip install SomePackage

Si noti che questo viene eseguito dalla riga di comando e non dalla shell python (il motivo dell'errore di sintassi nella domanda originale).


1
Ricevo ancora sintassi non valida. Sto usando IPython su un PC Windows 10. qualche idea?
DataGirl,

Questa pagina contiene istruzioni per l'installazione di IPython: ipython.readthedocs.io/en/stable/install/index.html $ pip install ipython. Presumibilmente, ciò si tradurrebbe in $ python -m pip install ipython
Dan,

1
Questo non risponde a nulla dell'errore di sintassi
OneCricketeer

Questo era già coperto da altre risposte, ma l'ho aggiunto ora. La mia risposta era solo un supplemento per 3.x.
Dan,

ha funzionato per me su Windows 10 - mi ha anche consigliato di aggiornare pip come da commento precedente :)
Kdean571

2

Inizialmente anch'io ho affrontato lo stesso problema, ho installato Python e quando ho eseguito il pipcomando mi ha lanciato un errore come mostrato nella foto qui sotto.

inserisci qui la descrizione dell'immagine

Assicurarsi che il percorso del pip sia aggiunto nelle variabili ambientali. Per me, il percorso di installazione di Python e Pip è ::
Python: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\
pip: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\Scripts
Entrambi questi percorsi sono stati aggiunti al percorso nelle variabili ambientali.

Ora apri una nuova finestra cmd e digita pip, dovresti vedere una schermata come di seguito.

inserisci qui la descrizione dell'immagine

Adesso digita pip install <<package-name>>. Qui sto installando il pacchetto spyder, quindi la mia istruzione da riga di comando sarà come pip install spydered ecco la mia schermata di esecuzione.

inserisci qui la descrizione dell'immagine

e spero che abbiamo finito con questo !!


1
Questo non risponde alla domanda.
sinoroc,

0

devi digitarlo in cmd non nell'IDLE. perché IDLE non è un prompt dei comandi se si desidera installare qualcosa da IDLE digitare questo

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

questo sta chiamando pip come pip <commands>nel terminale. I comandi saranno separati dagli spazi in cui ci si trova.


Questa è una risposta obsoleta rispetto alla versione pip 10.0. ImportError: cannot import name mainusando pip v19.0.3
Zydnar

-1

A livello di programmazione, attualmente funziona. Vedo tutte le risposte post 10.0 e tutte, ma nessuna di queste è la strada giusta per me. Sicuramente all'interno di Kaggle, questo approccio funziona

from pip._internal import main as _main

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

perché non usare jusy: da pip .__ main__ import _main?
Matthijs990,

-3

Prova ad aggiornare pip con il comando seguente e riprova

python -m pip install -U pip

un aggiornamento di pip non lo farà funzionare nella shell di Python
Matthijs990,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.