2016-04-27 4 views
2

Ich möchte alle Anforderungen eines Python-Pakets, das ich schreibe, manuell installieren. Zu diesem Zweck habe ich die Datei requirements.txt und hinzugefügt, um die Abhängigkeiten, Zeile für Zeile:Pip: Abhängigkeiten von Abhängigkeiten installieren

$ cat requirements.txt 
meshio 
numpy 

Beim Laufen

$ pip install -r requirements.txt 

diese beiden Pakete in Ordnung installiert sind, aber ich bemerkte, dass die Abhängigkeiten von meshio aren 't (dh was auch immer in seiner requirements.txt aufgeführt ist). Kein Wunder, wie soll Pip das wissen?

Gibt es einen Mechanismus für die Installation der gesamten Abhängigkeitsbaumstruktur mit Pip?

Antwort

2

Stellt sich heraus, für die Abhängigkeiten installiert werden, muss die Pakete seine Abhängigkeiten zur Liste als

install_requires=[ 
    'numpy', 
    'pyyaml' 
    ], 

als Teil setup() in setup.py, nicht in requirements.txt.

0

Ich bin mir nicht sicher, ob das ist, was Sie brauchen. Aber so löse ich dieses Problem. Ich erstelle eine virtuelle Umgebung für jedes meiner Python-Projekte.

cd my_project_folder 
virtualenv venv # choose the python interpreter you need ;) 
source venv/bin/activate 

Dann installiere ich alle benötigten Pakete für das Projekt.

pip install <what ever packages you need> 

Wenn Sie dann eine requirements.txt erstellen möchten, können Sie diesen Befehl verwenden

pip freeze > requirements.txt # including the installed version of each package 

Um eine virtuelle Umgebung zu verlassen nur deactivate geben. Hoffe, das hilft Ihnen, ...

Dies ist auch im Detail beschrieben here

4

Sie können von pip-tools interessiert sein, ein Python-Paket, das verwendet werden kann, eine requirements.txt-Datei zu erstellen, die alle zugrunde liegenden Abhängigkeiten berücksichtigt. Es kann über pip installiert werden:

pip install --upgrade pip # pip-tools needs pip>=6. 
pip install pip-tools 

Einmal installiert, können Sie den pip-compile Befehl verwenden, um Ihre Anforderungen Datei zu generieren. Angenommen, Sie arbeiten an einem Flask-Projekt.

Schreiben Sie die folgende Zeile in eine Datei: Sie würden folgendes zu tun haben

Flask 

Run pip-compile <your-file>. Es erzeugt Ihre requirements.txt mit allen angehängten Abhängigkeiten. Sie können pip-compile erneut ausführen, um die Pakete zu aktualisieren. Ihre Ausgabedatei wird wie folgt aussehen:

# 
# This file is autogenerated by pip-compile 
# Make changes in requirements.in, then run this to update: 
# 
# pip-compile <your-file> 
# 
flask==0.10.1 
itsdangerous==0.24  # via flask 
jinja2==2.7.3    # via flask 
markupsafe==0.23   # via jinja2 
werkzeug==0.10.4   # via flask