Kombination von conda environment.yml mit pip require.txt

95

Ich arbeite mit Conda-Umgebungen und benötige auch einige Pip-Pakete, z. B. vorkompilierte Räder von ~ gohlke .

Im Moment habe ich zwei Dateien: environment.ymlfür conda mit:

# run: conda env create --file environment.yml
name: test-env
dependencies:
- python>=3.5
- anaconda

und requirements.txtfür Pip, die nach Aktivierung über der Conditiona-Umgebung verwendet werden können:

# run: pip install -i requirements.txt
docx
gooey
http://www.lfd.uci.edu/~gohlke/pythonlibs/bofhrmxk/opencv_python-3.1.0-cp35-none-win_amd64.whl

Gibt es eine Möglichkeit, sie in einer Datei zu kombinieren (für conda)?

bastelflp
quelle
2
Es gibt eine GitHub-Pull-Anforderung für die Verwendung von require.txt in conda. github.com/conda/conda-env/pull/172
OneCricketeer
3
conda env exportgeneriert den Text für eine .yml basierend auf den aktuell installierten Paketen.
Kenny

Antworten:

116

Pip-Abhängigkeiten können environment.ymlwie folgt in die Datei aufgenommen werden ( docs ):

# run: conda env create --file environment.yml
name: test-env
dependencies:
- python>=3.5
- anaconda
- pip
- pip:
  # works for regular pip packages
  - docx
  - gooey
  # and for wheels
  - http://www.lfd.uci.edu/~gohlke/pythonlibs/bofhrmxk/opencv_python-3.1.0-cp35-none-win_amd64.whl

Es funktioniert auch für .whlDateien im selben Verzeichnis (siehe Dengars Antwort ) sowie für gängige Pip-Pakete.

bastelflp
quelle
3
Es hat gut funktioniert! conda env create -f environment.ymlund die environment.ymlDatei muss sich im aktuellen Verzeichnis befinden, sonst werden seltsamerweise Fehler ausgegeben.
Johnny Zhang
28

Man kann das auch requirements.txtdirekt in der YAML verwenden. Beispielsweise,

name: test-env
dependencies:
  - python>=3.5
  - anaconda
  - pip
  - pip:
    - -r file:requirements.txt

Grundsätzlich kann jede Option, mit derpip install Sie ausgeführt werden können, in einer YAML ausgeführt werden. Siehe das Advanced Pip Beispiel für eine Präsentation von anderen Fähigkeiten.

merv
quelle
Was bedeutet das -r? Wenn man sich die Befehlszeilenoptionen von pip ( hier ) -r--
ansieht,
2
Fand es, ich hätte mir die pip installOptionen hier ansehen sollen . -rist für die Anforderungsdatei und das längere Äquivalent ist--requirement
dumbledad
13

Ich möchte nur hinzufügen, dass das Hinzufügen eines Rads im Verzeichnis auch funktioniert. Ich habe diesen Fehler erhalten, als ich die gesamte URL verwendet habe:

HTTP error 404 while getting http://www.lfd.uci.edu/~gohlke/pythonlibs/f9r7rmd8/opencv_python-3.1.0-cp35-none-win_amd64.whl

Am Ende wurde das Rad heruntergeladen und im selben Verzeichnis wie die yml-Datei gespeichert.

name: test-env
dependencies:
- python>=3.5
- anaconda
- pip
- pip:
  - opencv_python-3.1.0-cp35-none-win_amd64.whl
Dengar
quelle
Ich habe dies in der obigen Antwort erwähnt.
Bastelflp