回答:
私はあなたのPCでArcGISを探して狩る小さな(そして比較的人気のある)モジュールを作成しました。見つかったら、環境に正しいパスを追加して、arcpyをインポートできるようにします。使用方法は次のとおりです。
try:
import archook #The module which locates arcgis
archook.get_arcpy()
import arcpy
except ImportError:
# do whatever you do if arcpy isnt there.
このモジュールは、GitHubでホストされています:https : //github.com/JamesRamm/archook
それは非常にシンプルで、より堅牢にできると確信していますが、それは仕事をします。pypiで利用可能です:pip install archook
これには、より「手動」の元の方法よりもいくつかの利点があります(詳細は以下を参照)。
以下に元の答えを残しましたが、この解決策は(IMO)100%優れています。
2014年の回答
それでは、この回答は、Windows 7 / Windows Server上のArcGIS 10.1 64ビットを使用したAnaconda 64ビットPythonディストリビューションで機能します。下記のヒントの一部(またはすべて)は、Pythonの他のWindowsディストリビューションに適用される場合があります。最初に、anacondaをインストールします。C:\ Anacondaディレクトリに移動します。[システムをデフォルトのPythonにする]チェックボックスをオンにします。別のpythonがインストールされているという警告が表示される場合がありますが、続行します。次に:
セットアップパスと環境変数
最初に行うことは、DTBGGP64.pthファイルをC:\ Python27 \ ArcGISx6410.1 \ Lib \ site-packagesから新しい配布ディレクトリ(C:\ Anaconda)にコピーすることです。命名は任意ですが、.pth拡張子が必要です。これにより、新しいディストリビューションを使用するときにArcPyをインポートできます。 注:DTBGGP64.pthファイルの正しい場所は、site-packagesディレクトリ(C:\ Anaconda \ Libs \ site-packagesなど)にある必要があります。私は土がトップレベルのディレクトリにある場合はアナコンダの一部の古いバージョンでは、それが動作することを発見した システム変数で:次に、環境変数をチェックする必要がありますパス、Pythonディレクトリへの既存のパスを新しいパスに置き換える必要があります。(例:C:\ Anaconda; C:\ Anaconda \ Scripts;)これにより、デフォルトのpythonディレクトリの場所がウィンドウに通知されます。ユーザー変数PYTHONPATHも正しいことを確認してください。これは、.pthファイルで記述されていないか、site-packagesにインストールされている、使用するライブラリを指している必要があります。IEこれは、独自の開発パッケージ、またはインストール場所が異なるmapnikなどのパッケージです。
レジストリ設定を確認する
一部のマシンでは、新しいPythonからarcpyを使用し、ArcGIS内でPythonを使用できるようにするには、上記で十分です。他のマシンでは、レジストリキーを確認する必要がある場合があります。次のレジストリキーにはpython設定があります。
HKEY_LOCAL_MACHINE \ SOFTWARE \ Python \ PythonCore \ 2.7 \ PythonPath
1つのキーがあり、その値はC:\ Anaconda \ Lib; C:\ Anaconda \ DLLs
(またはPythonインストールに対応するフォルダー)である必要があります
HKEY_LOCAL_MACHINE \ SOFTWARE \ Python \ PythonCore \ 2.7 \ InstallPath
キーはC:\ Anacondaである必要があります
他のpythonバージョンがインストールされている可能性があります...その場合、上記のパスのバージョン番号を変更します
HKEY_CLASSES_ROOT \ Python.CompiledFile \ DefaultIcon これは、.pycファイルに使用する.icoファイルの場所です。
HKEY_CLASSES_ROOT \ Python.CompiledFile \ shell \ open \ command
これは、シェルから.pycファイルを開くときに発行するコマンドです。python.exe
目的のPythonバージョンの場所へのパスを変更する必要があります
HKEY_CLASSES_ROOT \ Python.File ここでのキーは、.pyファイルに適用されることを除いて、Python.CompiledFileのキーと同じです。繰り返しますが、関連する変更を行います。「IDLEで編集」または「Pythonwinで編集」のための追加のキーがあります。繰り返しますが、これらのキーのパスが目的のpythonバージョンを指すように、関連する変更を行います。
HKEY_CLASSES_ROOT \ Python.NoConFile
これらはPython.Fileと同じですが、必要pythonw.exe
に応じてプログラムを指す必要があります。
HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ Python10.1
ザ・PythonDirのArcMapなどの中で使用するPythonのインストールへのキーポイント..あなたは、ESRIによってインストールされたPythonインストールとして残るか、新しいインストールにそれを指すように、このために望むことができます。ArcMapに新しいPythonインストールを指定する場合、他の変更が必要になる場合があります。新しいディストリビューションによってインストールされるパッケージのバージョン(numpyなど)に問題がある可能性があります。遭遇したことはありません。
私の仕事の大半では、これは無関係です。通常、Pythonを単独で使用し、場合によってはarcpyにアクセスしたいからです。arcmap内からpythonを使用することはめったにありません。したがって、この最終ステップのテストはほとんど行いませんでしたが、これまで試したすべての方法で動作するようです。
Python(x、y)などをインストールするプロセスも似ていると思います。
その他の注意事項
.pthファイルの内容は、ArcGISインストールの次のフォルダーを指すパスのリストです。たとえば、bin64、arcpy、ArcToolbox \ Scriptsは、私の.pthファイルに次のものが含まれています。
C:\Program Files (x86)\ArcGIS\Desktop10.2\bin64
C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy
C:\Program Files (x86)\ArcGIS\Desktop10.2\ArcToolbox\Scripts
私の解決策は、使用しているpython環境に基づいてパスを設定するスタートアップスクリプトを設定することです。この方法には、Pythonインストールで.pthファイルを書き込むために管理者アクセスが必要ないという(巨大な)利点があります。このスクリプトは、32ビットと64ビットの両方のAnacondaとArcGIS / arcpyを使用するように設定されています。
# Startup script to link Anaconda python environment with ArcGIS
#
# 1. Install Anaconda, setup environment to match your ArcGIS version
# 2. Edit the paths below
# 3. Put this startup script in the startup folder as "usercustomize.py"
# Startup folder can be found with: "C:\Python27\ArcGIS10.2\python -m site --user-site"
# Usually will be:
# C:\Users\%USERNAME%\AppData\Roaming\Python\Python27\site-packages
import sys
import os
# edit these paths to match your setup
arcver = "10.2"
# Anaconda home folders
conda32 = r"D:\Users\cprice\Anaconda"
conda64 = r"D:\Users\cprice\Anaconda64"
# here are the conda environments you've set up use with ArcGIS
# arc1022 is the environment setup for ArcGIS
conda_env32 = "{}/envs/{}".format(conda32, "arc1022")
conda_env64 = "{}/envs/{}".format(conda64, "arc1022")
# do not edit below this line
# ArcGIS Python home folders
# i.e. C:\Python27\ArcGIS10.2
arcver = arcver[:4]
arcpy32 = r"C:\Python27\ArcGIS{}".format(arcver)
arcpy64 = r"C:\Python27\ArcGISx64{}".format(arcver)
try:
if sys.version.find("64 bit") < 0:
conda_path = os.path.normpath(conda_env32)
arcpy_path = os.path.normpath(arcpy32)
arcpy_pthfile = os.path.normpath(
arcpy_path + "/lib/site-packages/desktop{}.pth".format(arcver))
else:
conda_path = os.path.normpath(conda_env64)
arcpy_path = os.path.normpath(arcpy64)
arcpy_pthfile = os.path.normpath(
arcpy_path + "/lib/site-packages/DTBGGP64.pth")
for p in [conda_path, arcpy_path, arcpy_pthfile]:
if not os.path.exists(p):
raise Exception("{} not found".format(p))
## print(sys.prefix)
## print(conda_path)
# If running ArcGIS's Python, add conda modules to path
if (sys.executable.lower().find("desktop" + arcver) != -1
or sys.prefix.lower().find("arcgis10") != -1):
sys.path.append(os.path.dirname(arcpy_path))
conda_site = os.path.join(conda_path, "lib", "site-packages")
if not os.path.isdir(conda_site):
raise Exception()
sys.path.append(conda_site)
print("usercustomize.py: added conda paths to arc")
# if running Anaconda add arcpy to path
elif sys.prefix.lower() == conda_path.lower():
with open(arcpy_pthfile, "r") as f:
sys.path += [p.strip() for p in f.readlines()]
print("usercustomize.py: added arcpy paths to conda")
except Exception as msg:
print(msg)
pass
誰かがArcGIS Proを使用してこれを実行しようとしている場合(つまり、python 2ではなくpython 3を使用):
anacondaパッケージ内でspyderを使用します。これを機能させる方法は、Spyderの[ツール]> [Pythonインタープリター]に移動し、Spyderが現在C:\ Program Files \ ArcGIS \ Pro \ bin \ Python \ Scripts \ propy.batにあるpropy.batファイルを指すようにすることです。
これにより、Spyderで正しいPythonバージョンが有効になり、arcpyをインポートできます。
次のコードを使用して、arcpyとitの依存関係を含む個別の仮想環境をセットアップします。
set "VENV_PATH=C:\VirtualEnvs\MyArcPyEnv"
set "PYTHON=C:\Python27\ArcGIS10.3"
mklink /J %VENV_PATH%\Lib\site-packages\arcpy "C:\Program Files (x86)\ArcGIS\Desktop10.3\arcpy\arcpy"
mklink /J %VENV_PATH%\Lib\site-packages\numpy %PYTHON%\Lib\site-packages\numpy
mklink /J %VENV_PATH%\Lib\site-packages\matplotlib C:\Python27\ArcGIS10.3\Lib\site-packages\matplotlib
mklink /J %VENV_PATH%\Lib\site-packages\dateutil %PYTHON%\Lib\site-packages\dateutil
mklink /J %VENV_PATH%\Lib\site-packages\mpl_toolkits %PYTHON%\Lib\site-packages\mpl_toolkits
copy %PYTHON%\Lib\site-packages\pyparsing.py %VENV_PATH%\Lib\site-packages
copy %PYTHON%\Lib\site-packages\pylab.py %VENV_PATH%\site-packages
copy %PYTHON%\Lib\site-packages\netcdftime.py %VENV_PATH%\Lib\site-packages
copy %PYTHON%\Lib\site-packages\netCDF4_utils.py %VENV_PATH%\Lib\site-packages
REM Only one of the following .pth files will exist (dependent on x64 or x32)
copy %PYTHON%\Lib\site-packages\Desktop10.3.pth %VENV_PATH%\Lib\site-packages
copy %PYTHON%\Lib\site-packages\DTBGGP64.pth %VENV_PATH%\Lib\site-packages