Warum löst "pip install" in Python einen SyntaxError aus?

232

Ich versuche, mit pip ein Paket zu installieren. Ich versuche, pip installvon der Python-Shell aus zu laufen , aber ich bekomme eine SyntaxError. Warum erhalte ich diesen Fehler? Wie installiere ich das Paket mit pip?

>>> pip install selenium
              ^
SyntaxError: invalid syntax
Nacht
quelle

Antworten:

297

pip wird über die Befehlszeile ausgeführt, nicht über den Python-Interpreter. Es ist ein Programm, das Module installiert , sodass Sie sie in Python verwenden können. Sobald Sie das Modul installiert haben, können Sie die Python-Shell öffnen und ausführenimport selenium .

Die Python-Shell ist keine Befehlszeile, sondern ein interaktiver Interpreter. Sie geben Python-Code ein, keine Befehle.

Lennart Regebro
quelle
2
Vielen Dank für die Klarstellung, aber ich kann es immer noch nicht zum Laufen bringen. Wo genau ist das? Es gibt mir einen Fehler "Pip wird nicht erkannt" (weil ich nicht das richtige Verzeichnis bin). Es wurde in \ site-packages installiert, aber ich habe es mir überlegt und kann keine pip.exe finden
Nacht
25
@Nacht - pipbefindet sich im Skriptverzeichnis Ihrer Python-Installation, sodass Sie es Ihrem Pfad hinzufügen möchten. Fügen Sie C:\Python32\scriptsIhrem hinzu PATH. Ändern Sie den Pfad nach Bedarf, je nachdem, wo Sie ihn installiert haben.
wkl
3
Tatsächlich ist pip.exe in Windows ein Python-Skript wie andere im Verzeichnis / scripts, wird jedoch in exe eingeschlossen, um es mit dem Standard-Python-Interpreter auszuführen. Durch das Öffnen pip.exe mit 7-zip Sie sehen Haupt pip, sys Py Import und Re - Module ... (Und es werden Sie die Antwort finden , wie es in einem Python - Shell laufen) -> Pip ist ein regelmäßiger Python-Modul. Vergessen Sie nicht, dass Windows nicht die erste Plattform war, die Python unterstützt, sondern Linux, und dort ist Python ein Teil des Betriebssystems.
Zydnar
1
Ich weiß für mich, dass ich dies über die Befehlszeile tun musste (nicht über die Python-Befehlszeile). Dies geschah nach dem Wechsel des Verzeichnisses in den Speicherort von python.exe und musste dann den Dateityp auf pip3 setzen. In meinem Fall war ich nach Anfragen für HTTP-Arbeit. Nämlich: Python Pip3.exe Installationsanforderungen <--- dies funktionierte perfekt, wiederholte das gleiche für Pytz-Modul
Natur3
106

Verwenden Sie die Befehlszeile, nicht die Python-Shell (DOS, PowerShell in Windows).

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

Wenn Sie Python mit den neuesten Installationsprogrammen in Ihrem PATH installiert haben, müssen Sie sich nicht in diesem Ordner befinden, um pip auszuführen

Terminal in Mac oder Linux

$ pip install XYZ
Ruxming
quelle
3
Vielen Dank, dass Sie das C: .... hinzugefügt haben. Dies hat mir geholfen zu erkennen, wohin ich cd musste, da Sie die Befehlszeile nicht einfach öffnen und pip eingeben können.
Hammythepig
2
Zu Ihrer Information, ich habe die Python-Installation, die ich gerade gemacht habe, NICHT eingestellt PATH. Ich musste dies manuell tun und auf den Installationspfad in%APPDATA%
UuDdLrLrSs
61

Wie @sinoroc vorgeschlagen hat, verwendet die korrekte Art der Installation eines Pakets über pip einen separaten Prozess, da pip möglicherweise das Schließen eines Threads verursacht oder einen Neustart des Interpreters zum Laden eines neu installierten Pakets erforderlich macht. Dies ist also die richtige Art, die API zu verwenden. subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])Da Python dies jedoch zulässt Um auf die interne API zuzugreifen und zu wissen, wofür Sie die API verwenden, möchten Sie möglicherweise trotzdem die interne API verwenden, z. Wenn Sie einen eigenen GUI-Paketmanager mit alternativen Ressourcen wie https://www.lfd.uci.edu/~gohlke/pythonlibs/ erstellen.

Die folgende Soulution ist veraltet, anstatt Downvoting Updates vorzuschlagen. Weitere Informationen finden Sie unter https://github.com/pypa/pip/issues/7498 .


UPDATE : Seit Pip Version 10.x gibt es keine mehr get_installed_distributions()oder mainMethode unter import pip stattdessen verwenden import pip._internal as pip .

UPDATE ca. v.18 get_installed_distributions() wurde entfernt. Stattdessen können Sie den Generator freezewie folgt verwenden:

from pip._internal.operations.freeze import freeze

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

# eg output ['pip==19.0.3']


Wenn Sie pip im Python-Interpreter verwenden möchten, versuchen Sie Folgendes:

import pip

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

Wenn Sie jedes installierte Paket aktualisieren müssen, verwenden Sie Folgendes:

import pip

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

Wenn Sie die Installation anderer Pakete beenden möchten, wenn eine Installation fehlschlägt, verwenden Sie sie in einem einzigen pip.main([])Aufruf:

import pip

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

Hinweis : Wenn Sie von der Liste in der Datei mit -r/ --requirementparameter installieren, benötigen Sie NICHT die Funktion open ().

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

Warnung : Einige Parameter sind so einfach--help können dazu führen, dass der Python-Interpreter gestoppt wird.

Neugier: Wenn pip.exeSie verwenden, verwenden Sie ohnehin Python-Interpreter und Pip-Modul. Wenn Sie entpacken pip.exeoder pip3.exeunabhängig davon, ob es sich um Python 2.x oder 3.x handelt, befindet sich darin die GLEICHE Einzeldatei __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())
Zydnar
quelle
5
Dies funktioniert in der Python-Shell, daher denke ich, dass dies die akzeptierte Antwort sein sollte.
François M.
5
Genau das hatte ich gehofft, als ich dieses Problem googelte.
Andrew Brēza
1
Tolle Antwort, und sie sollte auf jeden Fall hier enthalten sein, aber ich bin nicht der Meinung, dass sie die akzeptierte Antwort sein sollte, da der Benutzer eindeutig versucht hat, die jetzt allgegenwärtige Syntax "pip install" zum Laufen zu bringen. Da diese Syntax mit dieser Methode nicht funktioniert, wird dieses Problem nicht direkt gelöst. Es kann jedoch nützlicher sein als die akzeptierte Antwort :)
Dan
Keine Ahnung, was wirklich mit OP gemeint war, aber diese Antwort war wirklich spät, daher ist es nicht wichtig, ob sie hier akzeptiert wird.
Zydnar
@Zydnar, stimmte zu - meine Antwort war an Francois, der sagte, dies sollte die akzeptierte Antwort sein. Ich habe meine Argumentation veröffentlicht, warum nicht. Trotzdem denke ich immer noch, dass dies ein großartiger Beitrag ist.
Dan
53

Befolgen Sie zum Ausführen von pip in Python 3.x einfach die Anweisungen auf der Python-Seite: Installieren von Python-Modulen .

python -m pip install SomePackage

Beachten Sie, dass dies über die Befehlszeile und nicht über die Python-Shell ausgeführt wird (der Grund für den Syntaxfehler in der ursprünglichen Frage).

Dan
quelle
1
Ich erhalte immer noch eine ungültige Syntax. Ich verwende IPython auf einem Windows 10-PC. Irgendwelche Gedanken?
DataGirl
Diese Seite enthält Anweisungen zum Installieren von IPython: ipython.readthedocs.io/en/stable/install/index.html $ pip install ipython. Vermutlich würde das bedeuten, dass $ python -m pip ipython installiert
Dan
1
Dies beantwortet nichts über den Syntaxfehler
OneCricketeer
Dies wurde bereits durch andere Antworten abgedeckt, aber ich habe es jetzt hinzugefügt. Meine Antwort war nur eine Ergänzung für 3.x.
Dan
arbeitete für mich unter Windows 10 - riet mir auch, Pip gemäß vorherigem Kommentar zu aktualisieren :)
Kdean571
2

Anfangs hatte auch ich das gleiche Problem. Ich habe Python installiert und beim Ausführen des pipBefehls wurde ein Fehler ausgegeben, wie in der Abbildung unten gezeigt.

Geben Sie hier die Bildbeschreibung ein

Stellen Sie sicher, dass der Pip-Pfad in Umgebungsvariablen hinzugefügt wird. Für mich lautet der Installationspfad für Python und Pip ::
Python: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\
pip:C:\Users\fhhz\AppData\Local\Programs\Python\Python38\Scripts
Beide Pfade wurden dem Pfad in Umgebungsvariablen hinzugefügt.

Öffnen Sie nun ein neues cmd-Fenster und geben Sie pip ein. Es sollte ein Bildschirm wie unten angezeigt werden.

Geben Sie hier die Bildbeschreibung ein

Geben Sie nun ein pip install <<package-name>>. Hier installiere ich das Paket spyder, damit meine Befehlszeilenanweisung wie folgt lautet pip install spyderund hier geht mein laufender Bildschirm.

Geben Sie hier die Bildbeschreibung ein

und ich hoffe wir sind damit fertig !!

bemannt
quelle
1
Dies beantwortet die Frage nicht.
Sinoroc
0

Sie müssen es in cmd eingeben, nicht im IDLE. Da IDLE keine Eingabeaufforderung ist, wenn Sie etwas von IDLE installieren möchten, geben Sie dies ein

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

Dies ruft pip wie pip <commands>im Terminal auf. Die Befehle werden durch Leerzeichen getrennt, die Sie dort ausführen.

Matthijs990
quelle
Dies ist eine veraltete Antwort seit ungefähr Pip Version 10.0. ImportError: cannot import name mainusing pip v19.0.3
Zydnar
-1

Programmatisch funktioniert derzeit Folgendes . Ich sehe alle Antworten nach 10.0 und alle, aber keine davon ist der richtige Weg für mich. In Kaggle funktioniert dieser Ansatz mit Sicherheit

from pip._internal import main as _main

package_names=['pandas'] #packages to install
_main(['install'] + package_names + ['--upgrade']) 
Demongolem
quelle
Warum nicht einfach verwenden: von pip .__ main__ import _main?
Matthijs990
-3

Versuchen Sie, pip mit dem folgenden Befehl zu aktualisieren, und versuchen Sie es erneut

python -m pip install -U pip
Karthik
quelle
Ein Update von Pip lässt es nicht in der Python-Shell funktionieren
Matthijs990