2016-06-30 17 views
10

Ich habe meine gerade aktive Umgebung miteine Conda Umgebung mit lokalen pip exportieren installiert

exportiert
conda env export > environment.yml 

Dies ist sehr praktisch, da es den Überblick über sowohl Conda hält und installierten Pakete pip. Allerdings habe ich ein paar Pakete (formschön und Grundkarte zum Beispiel) lokal installiert von pip aus einer .whl-Datei von Christoph Gohlke kompilierten Paketen für Windows. Wenn ich versuche, meine Umgebung neu zu erstellen, indem

conda env create -f environment.yml 

pip kehrt mit einem Fehler, da es nicht diese Pakete in seinem Index (natürlich) finden kann. Gibt es eine Möglichkeit, Pip im Export-Schritt conda zu sagen, wo man nach diesen lokalen Paketen suchen soll? Es kann davon ausgegangen werden, dass sich die .whl-Dateien im selben Verzeichnis wie die Datei environment.yml befinden.

+0

'shapely' und' basemap 'Beide haben Conda-Pakete in Conda-Community-Kanal Conda-Schmiede. Es könnte einfacher für Sie sein, stattdessen nur Conda-Pakete zu installieren. – cel

+0

Ich wusste das nicht - das ist sehr praktisch für diese Pakete. Leider mag meine Unternehmensfirewall nicht Conda-Forge :( – user787267

Antwort

8

Es gibt keine Möglichkeit, es tatsächlich zu bekommen, um Einträge für die .whl Datei automatisch von dem, was ich weiß, zu erstellen.

Die einfachste Möglichkeit, dies zum Laufen zu bringen, besteht darin, die Datei environment.yml manuell zu ändern und die Datei .whl in die Liste unter - pip: einzufügen. Ich habe versucht, dies durch die .whl Paket für nose heruntergeladen und im selben Verzeichnis wie meine env.yml Datei platzieren, sah die Struktur wie folgt aus:

name: python3_test 
dependencies: 
- openssl=1.0.2h=1 
- pip=8.1.2=py35_0 
- python=3.5.1=5 
- readline=6.2=2 
- setuptools=23.0.0=py35_0 
- sqlite=3.13.0=0 
- tk=8.5.18=0 
- wheel=0.29.0=py35_0 
- xz=5.2.2=0 
- zlib=1.2.8=3 
- pip: 
    - nose-1.3.7-py3-none-any.whl 

Wenn es in einem anderen Verzeichnis befindet, nur das Verzeichnis liefern. Der Pfad sollte natürlich gültig sein, wenn conda create env ausgegeben wird.

Der pip Befehl ausgegeben ist ein pretty straightforward install, so dass die Semantik der Installation mit Pip von der Befehlszeile aus ähnlich sein sollte. Verdammt, du könntest sogar die url für die .whl Datei in der requirements.yml hinzufügen und die Installation würde immer noch reibungslos gehen. Auch hier hält den Rest des gleiche und die URL mit nose zum Download:

- pip: 
    - https://pypi.python.org/packages/15/d8/dd071918c040f50fa1cf80da16423af51ff8ce4a0f2399b7bf8de45ac3d9/nose-1.3.7-py3-none-any.whl#md5=3135984cc9cfcbe5d9c46e166d6743b0 

sollte jede URL kein Problem verursachen.

1

Hier ist ein konkretes Beispiel für eine environment.yml, die eine URL verwendet, um Rad-Dateien von Christoph Gohlke die kompilierte Pakete für Windows zu verknüpfen:

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

Referenz: https://stackoverflow.com/a/35245610/1493069