2016-05-23 12 views
3

Vielleicht könnten Sie mir mit etwas Hilfe zur Verfügung stellen.verwenden Sie einfach Python Anaconda ohne Internetverbindung

Nun, ich möchte eine Python-Umgebung auf Produktionsservern bereitstellen, die keinen Zugriff auf das Internet haben.

Ich entdeckte Python Anaconda Verteilung und installierte es, um es zu versuchen. Das Installationsverzeichnis ist 1,6 GB, und ich kann in pkgs Verzeichnis sehen, dass viele Bibliotheken da sind. Allerdings, wenn ich versuche, eine Umgebung zu installieren, wird Conda nicht in den lokalen Verzeichnissen Nachschlag ...

conda create --offline --use-local --dry-run --name pandas_etl python 
Using Anaconda Cloud api site https://api.anaconda.org 
Fetching package metadata: 
Solving package specifications: 
Error: Package missing in current linux-64 channels: 
    - python 

Also, was ist der Punkt all diese Bibliotheken zu bündeln, wenn Conda sie auf Online-Repositories holen muss nach oben ? Vielleicht vermisse ich etwas?

Ich suche eine Art „viele Batterien enthalten Python“ für den bequemen Einsatz ...

Dank!

Anmerkung: Ich benutze ein Linux-System und installiert die regelmäßige Anakonda, nicht die miniconda

+0

Anaconda Verteilung ist völlig a * Batterien enthalten * und bietet eine sehr schöne Umgebung einrichten. Jede Menge Arbeit, um dies einzurichten, ist es wert! Hast du [das] versucht (http://stackoverflow.com/a/31776556/2087463)? – tmthydvnprt

+0

Haben Sie das Installationsprogramm heruntergeladen? Beim ersten Mal habe ich alles über eine GUI oder den Installationsassistenten * gemacht. Erst als ich ein Paket aktualisieren oder Pakete anders verwalten musste, musste ich 'conda' direkt über die Befehlszeile ausführen. – tmthydvnprt

+0

Hallo, danke. Ich habe es versucht: – stockersky

Antwort

5

Nun, nach etwa mit Pandas zu spielen, während Fabio Nelli Buch ‚Python Daten Analytic‘ liest, wird mir klar, wie viel Pandas ist eine wunderbare Bibliothek. SO habe ich mit Anaconda gearbeitet, damit es in meiner Umgebung funktioniert.

1- Laden Sie die Anaconda-Installer und installieren Sie es (ich denke, wird miniconda genug sein)

2- einen lokalen Kanal Stellen durch Spiegelung des (Teil) anaconda Repository

Do not Versuchen Sie, einzelne Pakete auf Ihrer Workstation herunterzuladen, um sie auf Ihren Offline-Server zu übertragen. Tatsächlich werden Abhängigkeiten nicht erfüllt. Pakete müssen in einem Kanal enthalten sein und in Metadatendateien (repodata.json und repodata.json.bz2) indiziert sein, damit sie ordnungsgemäß miteinander verbunden sind.

I verwendet wget einen Teil des Anaconda-Repository zu spiegeln: https://repo.continuum.io/pkgs/ ich so etwas wie diese verwendet Pakete, um herauszufiltern, nicht die ganze Repo zum Download:

wget -r --no-parent -R --regex-type pcre --reject-regex '(.*py2[67].*)|(.*py[34].*)' https://repo.continuum.io/pkgs/free/linux-64/ 

Vorsicht, nicht wie etwas zu verwenden, "nur py35" -Pakete. In der Tat haben viele Pakete im Repo keine Versionszeichenfolge in ihrem Namen; und du wirst sie als Abhängigkeit vermissen.

Nun, ich denke, Sie können genauer filtern. Ich habe ungefähr 6 GB Pakete geholt!

!!!! Erstellen Sie keinen benutzerdefinierten Kanal aus dem Teil des Repositorys, den Sie gerade heruntergeladen haben !!!! (anaconda benutzerdefinierte Kanäle) Ich versuchte dies zuerst und ich hatte diese Ausnahme: "RecursionError: maximale Rekursion Tiefe überschritten beim Aufruf eines Python-Objekts". Dies ist eine bekannte pb: https://github.com/conda/conda/issues/2371 ==> die Maintainer diskutieren dies: die Metadata in repodata.json und repodata.json.bz2 gehalten spiegeln nicht metadatas in einzelnen pkg.Sie entscheiden sich dafür, nur die Repometadaten zu bearbeiten, um Probleme anstelle von jedem Paketmetadaten zu beheben. Also, wenn Sie den Kanal metadatas aus Paketen neu erstellen, vermissen Sie.

==> Also: erstellen Sie keine Kanalmetadaten neu, sondern behalten Sie nur die Repository-Metadaten (repodata.json und repodata.json.bz2, die im offiziellen Anaconda-Repository enthalten sind). Auch wenn die ganze Repo nicht in Ihrem neuen Kanal ist, wird es funktionieren

3- Test (zumindest, wenn Sie nicht während Spiegelung ;-) zu viel filtern haben) und verwenden Sie Ihren neuen Kanal

HINWEIS: Schließen Sie die Plattformarchitektur nicht in den Pfad ein. Beispiel: Ihr Kanalbaum ist wahrscheinlich: /Path_to_your_channel/repo.continuum.io/pkgs/free/linux-64 Lassen Sie einfach Ihren Bogen (linux-64 in meinem Fall). Conda wird es herausfinden.

Update:

conda update -c file://resto/anaconda_repo/repo.continuum.io/pkgs/free/ --override-channels --all 

Und so weiter ... ich denke, können Sie die Conda conf-Datei Ihrer Systembenutzer verwenden Sie diesen lokalen Kanal zu erzwingen verwenden.

Ich hoffe, es hilft.

Guillaume

Verwandte Themen