Ich muss ein Paket von PyPi direkt in meinem Skript installieren. Vielleicht gibt es einige Modul oder distutils
( distribute
, pip
etc.) Funktion , die mir erlaubt , nur so etwas wie ausführen pypi.install('requests')
und Anfragen werden in meine virtualenv installiert werden.
python
pip
python-module
pypi
chuwy
quelle
quelle
pip
ist nie eine gute Idee - die bloße Tatsache, dass alle Inhalte_internal
ab Version 10pip._internal
ist nicht für den Import konzipiert, kann jedoch beim Import in ein anderes Programm absolut zufällige Aktionen ausführen.Antworten:
Die offiziell empfohlene Methode zum Installieren von Paketen aus einem Skript besteht darin, die Befehlszeilenschnittstelle von pip über einen Unterprozess aufzurufen. Die meisten anderen hier vorgestellten Antworten werden von pip nicht unterstützt . Darüber hinaus wurde seit pip v10 der gesamte Code
pip._internal
genau verschoben, um den Benutzern klar zu machen, dass die programmgesteuerte Verwendung von pip nicht zulässig ist.Verwenden
sys.executable
Sie diese Option, um sicherzustellen, dass Sie dasselbe aufrufen, daspip
der aktuellen Laufzeit zugeordnet ist.quelle
Sie können auch Folgendes verwenden:
quelle
pip.main()
wie in der Befehlszeile (jedoch mit jeder Option als separaten Eintrag in der Liste anstelle einer einzelnen Zeichenfolge). Und um anzugeben, welche Version des Pakets Sie möchten, gehen Sie wie in der Befehlszeile vor. Beispiel:pip.main(['install', 'pip==7.1.0'])
from pip._internal import main as pipmain
dann können Siepipmain()
genau wie die veralteten verwenden,pip.main()
siehe stackoverflow.com/questions/43398961/…Wenn Sie das
pip
erforderliche Paket installieren und nach der Installation importieren möchten , können Sie diesen Code verwenden:Wenn Sie ein Paket als Benutzer installiert haben, kann das Problem auftreten, dass Sie das Paket nicht einfach importieren können. Siehe So aktualisieren Sie sys.path? für weitere Informationen.
quelle
imp.reload(site)
holt michRuntimeError: dictionary changed size during iteration
pip uninstall <package_name>
. Ich kann es immer noch mit deinstallierenpip.main
, wollte aber nur wissen, wo das Paket installiert wird.pip install requests[security]
? Ich war mir nicht sicher, ob es die Globals richtig definieren würde.pip.main
funktioniert nicht mehr. pip.pypa.io/en/latest/user_guide/#using-pip-from-your-programDas sollte funktionieren:
quelle
[sys.executable, '-m', 'pip', 'install', name]
, stellen Sie sicher, dass Sie hier den "richtigen" Pip finden.Ich habe @ Aarons Antwort eine Ausnahmebehandlung hinzugefügt.
quelle
subprocess.call
damit der Code möglicherweise fehlschlägt.Sie definieren das abhängige Modul in der setup.py Ihres eigenen Pakets mit der Option "install_requires".
Wenn für Ihr Paket ein Konsolenskript generiert werden muss, können Sie den Einstiegspunkt "console_scripts" verwenden, um ein Wrapper-Skript zu generieren, das im Ordner "bin" (z. B. Ihrer virtualenv-Umgebung) abgelegt wird.
quelle