Ausführen von ArcGIS 10.0 unter Virtualenv

12

Ich arbeite an einem Python-Paket, das eine Mischung aus Befehlszeilen-Tools und ArcToolbox-Tools enthält. Für die Python-Entwicklung ist es sehr nützlich, VirtualEnv zu verwenden, insbesondere wenn Sie mit Installationsprogrammen arbeiten. Gibt es eine Möglichkeit, dass ArcMap oder ArcCatalog eine aktuelle VirtualEnv-Sitzung in Python erkennen, sodass bei der Ausführung eines benutzerdefinierten Tools die VirtualEnv-Pythonpfade und -Pakete anstelle der Standard-Pythonpfade und -Pakete unter c: \ Python26 \ ArcGIS10 verwendet werden? .0?

SagebrushGIS
quelle

Antworten:

11

Das ist nicht in die Anwendung integriert, aber ich gehe davon aus, dass Sie mit der Batch-Datei, mit der das virtuelle Env in einer cmd.exeSitzung eingerichtet wird, und anschließend mit arcmap.exe auf derselben DOS-Box Ihr virtuelles Env erhalten. ArcMap und Freunde werden den Pfad ändern leicht die Installation von der aufzunehmen arcgisscriptingund arcpy.

Bearbeiten: Sie müssen das Skript activate_this im Python-Fenster in Desktop-Apps explizit aufrufen, damit dies funktioniert. Wenn ich ein VirtualEnv in c:\Users\jason\myenvhabe, stelle ich es execfile(r'C:\Users\jason\myenv\Scripts\activate_this.py', {'__file__': r'C:\Users\jason\myenv\Scripts\activate_this.py'})über das Python-Fenster in einer ArcGIS-Desktop-App aus, damit es ausgeführt wird.

Jason Scheirer
quelle
Das scheint nicht zu funktionieren. Ich habe einen VirtualEnv-Arbeitsbereich erstellt, aktiviert und dann ein Paket installiert, das ich in ArcCatalog testen möchte. So weit, ist es gut. Wenn ich in dieser VirtualEnv-Sitzung eine Python-Shell öffne und die neu installierten Pakete importiere, funktioniert der Import. Wenn ich dann ArcCatalog starte und versuche, eines dieser Pakete über ein Toolbox-Skript aufzurufen, funktioniert es nicht. Wenn ich sys.path in der Python-Shell in ArcCatalog betrachte, wird das Standard-Python-Verzeichnis für ArcGIS 10.0 (C: \ Python26 \ ArcGIS10.0) angezeigt.
SagebrushGIS
4
activate_this.pyPrüfen Sie, ob Sie das Skript auch im selben Skriptverzeichnis Ihres VirtualEnv im Python-Fenster in ArcCatalog und unter Freunden verwenden können. Ich konnte execfile(r'C:\Users\jason\myenv\Scripts\activate_this.py', {'__file__': r'C:\Users\jason\myenv\Scripts\activate_this.py'})VirtualEnv in ArcMap ausführen und booten.
Jason Scheirer
1
Genial! Das hat funktioniert.
SagebrushGIS