Wie installiere ich Pakete mit pip gemäß der Datei require.txt aus einem lokalen Verzeichnis?

1082

Hier ist das Problem

Ich habe eine Anforderungen.txt, die aussieht wie:

BeautifulSoup==3.2.0
Django==1.3
Fabric==1.2.0
Jinja2==2.5.5
PyYAML==3.09
Pygments==1.4
SQLAlchemy==0.7.1
South==0.7.3
amqplib==0.6.1
anyjson==0.3
...

Ich habe ein lokales Archivverzeichnis, das alle Pakete + andere enthält.

Ich habe eine neue virtuelle Umgebung mit erstellt

bin/virtualenv testing

Nach der Aktivierung habe ich versucht, die Pakete gemäß den Anforderungen.txt aus dem lokalen Archivverzeichnis zu installieren.

source bin/activate
pip install -r /path/to/requirements.txt -f file:///path/to/archive/

Ich habe eine Ausgabe erhalten, die darauf hinweist, dass die Installation in Ordnung ist

Downloading/unpacking Fabric==1.2.0 (from -r ../testing/requirements.txt (line 3))
  Running setup.py egg_info for package Fabric
    warning: no previously-included files matching '*' found under directory 'docs/_build'
    warning: no files found matching 'fabfile.py'
Downloading/unpacking South==0.7.3 (from -r ../testing/requirements.txt (line 8))
  Running setup.py egg_info for package South
....

Eine spätere Überprüfung ergab jedoch, dass keines der Pakete ordnungsgemäß installiert ist. Ich kann das Paket nicht importieren und es befindet sich keines im Verzeichnis site-packages meiner virtuellen Umgebung. Also, was ist schief gelaufen?

Kakarukeys
quelle
4
Haben Sie versucht, --no-indexPyPI zu verwenden, damit es nicht einmal angezeigt wird?
Hugo Tavares
2
Sie haben die Fehlermeldung abgeschnitten. Es ist im Allgemeinen in der Nähe des Bodens.
Bukzor
Sie können die Dateipfade anstelle der Paketnamen verwenden. Dies bedeutet, dass Sie die Datei require.txt ändern müssen, den Befehl pip install jedoch beibehalten müssen.
Asafge
9
Die am meisten gewählte Antwort (die von Mike Lyons) beantwortet die Frage nicht einmal . Könnten Sie bitte die richtige Antwort der Codeape akzeptieren?
Piotr Dobrogost
2
überrascht, dass niemand anderes als pip.pypa.io/en/stable/user_guide/#requirements-files
MrMesees

Antworten:

785

Das funktioniert bei mir:

$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages

--no-index- Paketindex ignorieren ( --find-linksstattdessen nur URLs betrachten).

-f, --find-links <URL>- Wenn eine URL oder ein Pfad zu einer HTML-Datei vorhanden ist, analysieren Sie diese nach Links zu Archiven. Wenn es sich bei einem lokalen Pfad oder einer file://URL um ein Verzeichnis handelt, suchen Sie in der Verzeichnisliste nach Archiven.

Codeape
quelle
7
Informationen zu --no-indexHilfe von Command Pip helfen bei der Installation. --no-index Paketindex ignorieren ( --find-linksstattdessen nur URLs anzeigen). Informationen über die --find-linksvon dem Kommando pip Hilfe installieren -f , --find-links <url>wenn eine URL oder Pfad zu einer HTML - Datei, dann nach Links zu den Archiven analysieren. Wenn ein lokaler Pfad oder eine lokale Datei: // url ein Verzeichnis ist, suchen Sie in der Verzeichnisliste nach Archiven.
AWrightIV
1
//, Dies könnte eine sehr elegante Lösung sein, insbesondere angesichts des ewigen Kampfes mit dem Vendorizing: bitprophet.org/blog/2012/06/07/on-vendorizing
Nathan Basanese
Eine Warnung dabei ist, dass Sie möglicherweise pip install <some_module>ohne Verwendung, requirements.txtaber das wird nicht aktualisiert requirements.txt. Eine Alternative könnte darin bestehen, ein Docker so zu aktualisieren, dass alle Pip-Installationsbefehle aufgelistet werden, die zum Installieren von Abhängigkeiten ausgeführt werden.
kaufmännisches Und
Ich habe es versucht, python -m pip install -r requirements.txtals ich mich in der aktivierten Umgebung befand. Dinge reibungslos installiert, aber wenn ich Pip-Liste mache, zeigt es nicht, dass Pakete, wenn ich im aktiven Venv bin oder sogar nach dem Deaktivieren von Venv. kann diese Pakete auch nicht verwenden. Ich weiß nicht, was hier los ist
Shreyan Mehta
Verweisen Sie sicher pythonauf die ausführbare Python-Datei ( $ which python) der aktivierten Umgebung ?
Codeape
1364

Ich habe das Obige gelesen und festgestellt, dass dies eine alte Frage ist, aber sie ist völlig ungelöst und steht immer noch ganz oben in meinen Google-Suchergebnissen. Hier ist eine Antwort, die für alle funktioniert:

pip install -r /path/to/requirements.txt
Mike Lyons
quelle
284
Mir ist klar, dass diese Antwort nicht die ursprüngliche Frage anspricht, aber sie beantwortet die Frage, die ich hatte, als ich sie bei Google gefunden habe ...
Jonathan
Die ursprüngliche Frage hat sich geändert. Beachten Sie, wie er /path/to/requirements.txt jetzt verwendet.
Mike Lyons
8
@ MikeLyons ziemlich sicher, dass sich die Frage tatsächlich nicht geändert hat - es gibt keinen Bearbeitungsverlauf.
Mark Amery
48
Für diejenigen, die wissen möchten, was sie eingeben, bedeutet das -r im Befehl nur "Installation aus einer Anforderungsdatei" und ist eine Verknüpfung für --requirement
Florent Chatterji
2
Wenn ich ein Paket aktualisieren möchte (z. B. Django), ändere ich die Version in meiner Datei "require.txt" und führe sie aus pip install -r /path/to/requirements.txt. Dies erkennt die Änderung, aktualisiert das Paket und lässt alles andere in Ruhe.
Benutzer
130

Damit virtualenv alle Dateien in der Datei require.txt installiert.

  1. CD in das Verzeichnis, in dem sich die Datei require.txt befindet
  2. Aktivieren Sie Ihre virtuelle Umgebung
  3. run: pip install -r requirements.txt in deiner Shell
Aaron Lelevier
quelle
3
"pyenv virtualenv pip install require.txt funktioniert nicht" für Google ...
Jerad
Es funktioniert für mich anstelle anderer Antworten, ty
Jo Eark
58

Ich hatte ein ähnliches Problem. Ich habe es versucht:

pip install -U -r requirements.txt 

(-U = Update, wenn es bereits installiert war)

Aber das Problem ging weiter. Mir wurde klar, dass einige der generischen Bibliotheken für die Entwicklung fehlten.

sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk

Ich weiß nicht, ob dir das helfen würde.

enriquetaso
quelle
32
pip install -r requirements.txt

Weitere Details finden Sie in der Hilfe.

pip install --help

Wir können die Option '-r' finden

-r, --requirement Installation aus der angegebenen Anforderungsdatei. Diese Option kann mehrfach verwendet werden.

Weitere Informationen zu einigen häufig verwendeten Pip-Installationsoptionen: (Dies ist die Hilfeoption für den Pip-Installationsbefehl.)

Geben Sie hier die Bildbeschreibung ein

Das Obige ist auch der vollständige Satz von Optionen. Bitte verwenden Sie pip install --help, um eine vollständige Liste der Optionen zu erhalten.

Py_minion
quelle
26

Kurze Antwort

pip install -r /path/to/requirements.txt

oder in einer anderen Form:

python -m pip install -r /path/to/requirements.txt

Erläuterung

Hier -rist eine Kurzform von --requirementund es wird die pipInstallation aus der angegebenen requirementsDatei angefordert.

pipDie Installation wird erst gestartet, nachdem die Verfügbarkeit aller in der requirementsDatei aufgeführten Elemente überprüft wurde. Die Installation wird auch dann nicht gestartet, wenn eines requirementnicht verfügbar ist.

Eine Problemumgehung zum Installieren der verfügbaren Pakete besteht darin, die aufgelisteten Pakete einzeln zu installieren. Verwenden Sie dazu den folgenden Befehl. Eine rote Warnung wird angezeigt, um Sie über die nicht verfügbaren Pakete zu informieren.

cat requirements.txt | xargs -n 1 pip install

#Verwenden Sie Folgendes, um Kommentare (Zeilen, die mit a beginnen ) und Leerzeilen zu ignorieren :

cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install
Safwan
quelle
20

Oft möchten Sie eine schnelle Installation aus lokalen Archiven, ohne PyPI zu testen.

Laden Sie zunächst die Archive herunter, die Ihren Anforderungen entsprechen:

$ pip install --download <DIR> -r requirements.txt

Installieren Sie dann mit –find-linksund –no-index:

$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt
Jadav Bheda
quelle
no such option: --download
Max Malysh
12

Ich arbeite mit vielen Systemen, die von Entwicklern "nach den Anweisungen im Internet" durcheinander gebracht wurden. Es kommt sehr häufig vor, dass Sie pipund Ihr pythonBenutzer nicht dieselben Pfade / Site-Pakete betrachten. Aus diesem Grund beginne ich, wenn ich auf Seltsamkeit stoße, damit:

$ python -c 'import sys; print(sys.path)'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']

$ pip --version
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)

Das ist ein glückliches System .

Unten ist ein unglückliches System . (Oder zumindest ist es ein selig ignorantes System, das andere unglücklich macht.)

$ pip --version
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)

$ python -c 'import sys; print(sys.path)'
['', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/site-packages']

$ which pip pip2 pip3
/usr/local/bin/pip
/usr/local/bin/pip3

Es ist unglücklich, weil pip(python3.6 und) verwendet wird, /usr/local/lib/python3.6/site-packageswährend python(python2.7 und) verwendet wird/usr/local/lib/python2.7/site-packages

Wenn ich sicherstellen möchte, dass ich Anforderungen auf dem richtigen Python installiere , gehe ich folgendermaßen vor:

$ which -a python python2 python3
/usr/local/bin/python
/usr/bin/python
/usr/local/bin/python2
/usr/local/bin/python3

$ /usr/bin/python -m pip install -r requirements.txt

Sie haben gehört: "Wenn es nicht kaputt ist, versuchen Sie nicht, es zu reparieren." Die DevOps-Version lautet: "Wenn Sie es nicht kaputt gemacht haben und es umgehen können, versuchen Sie nicht, es zu reparieren."

Bruno Bronosky
quelle
10

Erstellen Sie zunächst eine virtuelle Umgebung

in Python 3.6

virtualenv --python=/usr/bin/python3.6 <path/to/new/virtualenv/>

in Python 2.7

virtualenv --python=/usr/bin/python2.7 <path/to/new/virtualenv/>

Aktivieren Sie dann die Umgebung und installieren Sie alle in der Datei request.txt verfügbaren Pakete.

source <path/to/new/virtualenv>/bin/activate
pip install -r <path/to/requirement.txt>
Girish Vas
quelle
9

Installieren der Datei "require.txt" in der virtuellen Umgebung mit Python 3:

Ich hatte das gleiche Problem. Ich habe versucht, die Datei require.txt in einer virtuellen Umgebung zu installieren. Ich habe die Lösung gefunden.

Anfangs habe ich meine virtuelle Umgebung folgendermaßen erstellt:

virtualenv -p python3 myenv

Aktivieren Sie die Umgebung mit:

source myenv/bin/activate

Jetzt habe ich die require.txt installiert mit:

pip3 install -r requirements.txt

Die Installation war erfolgreich und ich konnte die Module importieren.

janu777
quelle
Dieses Problem trat bei der Installation der Anforderungsdatei in einer virtuellen Umgebung auf. Ich habe jetzt meine Antwort geändert, um das Problem zu
beheben
1
Mit Anaconda Python 3.6 auf Windows, was ich tun musste virtualenv -p python myenv, myenv\Scripts\activate.bat,pip install -r requirements.txt
bdforbes
1
Im Gegenteil, dies scheint die einzige Antwort zu sein, die den Teil der Frage nach der Installation lokal definierter Deps in requirements.txteiner virtuellen Umgebung beantwortet. Es sei denn, ich vermisse etwas? Trotzdem danke!
Davnicwil
8

Versuche dies

python -m pip install -r requirements.txt
Jema
quelle
7
pip install --user -r requirements.txt 

ODER

pip3 install --user -r requirements.txt 
user1460675
quelle
Ist es möglich, --userinnerhalb der requirements.txtDatei anzugeben ?
Liang