it-swarm.com.de

die Installation von pip.main schlägt fehl, wenn das 'module'-Objekt kein Attribut' main 'hat

Ich versuche, einige der Python-Pakete aus einem Python-Skript heraus zu installieren, und ich verwende pip.main(install) dafür. Unten finden Sie ein Code-Snippet

try:
    import requests
except:
    import pip
    pip.main(['install', '-q', 'requests==2.0.1','PyYAML==3.11'])
    import requests

Ich habe versucht, main aus pip._internal zu importieren und pipmain anstelle von pip.main () zu verwenden, aber es half nicht.

Ich bin auf pip version 9.0.1 und python 2.7

3
Sagar birla

pip -Entwickler empfehlen nicht, pip aus dem Programm heraus aufzurufen. Die pip.main () -Methode wurde aus pip v10 entfernt. Als Alternative wird empfohlen, pip im Unterprozess auszuführen.

https://pip.pypa.io/de/stable/user_guide/?highlight=_internal#using-pip-from-your-program

try:
    import requests
except:
    import sys
    import subprocess
    subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'requests==2.0.1', 'PyYAML==3.11'])
    import requests
4
migimigi

Ich hatte das gleiche Problem und das Ausführen des folgenden Befehls löste es für mich:

easy_install pip
2
kaxil

Die kurze Antwort lautet: Mach das nicht. Verwenden Sie setup.py oder eine direkte Importanweisung. 

Deshalb funktioniert das nicht mit pip und wie man es umgehen kann.

pip wirkt sich auf die gesamte Umgebung aus. Je nachdem, wer und warum dies ausgeführt wird, kann requests möglicherweise nicht in der Umgebung installiert werden, in der das Skript ausgeführt wird. Es kann eine böse Überraschung sein, dass die Ausführung des Skripts die Python-Umgebung beeinflusst. 

Die Installation als Paket (mit python setup.py oder pip install) ist eine andere Angelegenheit. Es gibt verschiedene Möglichkeiten, andere Pakete mit requirements.txt und setup.py zu installieren. Es wird auch erwartet, dass die Installation eines Pakets seine Abhängigkeiten installiert. Sie können mehr in den python.org-Paketierungs-Tutorials lesen

Wenn Ihr Skript Abhängigkeiten hat, die Benutzer es jedoch nicht installieren müssen, sollten Sie es in README.rst und/oder requirements.txt angeben. oder enthalten einfach die Import-Anweisung, und wenn sie den Fehler erhalten, wissen sie, was zu tun ist. Lassen Sie sie steuern, in welcher Umgebung welche Pakete installiert werden.

0
e.s.

Die pip.main-Funktion wurde verschoben und nicht von pip devs entfernt. Die am höchsten gewählte Lösung ist hier nicht gut. Von Python -> Shell -> Python aus zu gehen ist keine gute Praxis, wenn Sie den Python-Code direkt ausführen können. Versuchen Sie from pip._internal import main, dann können Sie diese Hauptfunktion verwenden, um Ihre Pip-Aufrufe wie zuvor auszuführen.

0
Lunulata