ArcPy를 호출 할 수있는 별도의 Python 설치를하고 있습니까?


28

원래 ArcGIS python 설치를 중단하지 않고 arcpy를 사용할 수있는 별도의 Python 설치 (예 : Anaconda 또는 Python XY 배포)를 만드는 방법을 묻는 많은 Q & A가 있습니다.

나는이 같은 문제가 있었고 '유니버설'솔루션을 찾았다 고 생각합니다. 지금까지 약 8 대의 컴퓨터에서이 작업을 수행했으며 모두 제대로 작동합니다.

ArcGIS를 사용할 수있는 별도의 Python 배포판을 설치하는 방법은 무엇입니까?

답변:


37

나는 작고 비교적 인기있는 모듈을 만들어 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

보다 '수동적 인'독창적 인 방법에 비해 몇 가지 장점이 있습니다 (자세한 내용은 아래 참조).

  1. 각 파이썬 환경을 개별적으로 구성 할 필요가 없습니다 ... 모듈을 가져 와서 나가십시오.
  2. 레지스트리 키 또는 영구 환경 변수를 편집 / 생성하지 않으므로 기존의 python / arcgis 구성을 망칠 가능성 이 없습니다 .
  3. 다양한 폴더 / 파일의 경로 또는 설치 한 arcgi 버전에 대해 알 필요가 없습니다. 모듈이 모든 것을 찾아 줄 것입니다.
  4. 관리자 인증이 필요하지 않습니다
  5. 아나콘다에만 국한되지는 않습니다-파이썬 설치와 함께 작동합니다

아래에 원래 답변을 남겼지만이 솔루션은 (IMO) 100 % 더 좋습니다.


2014 년 답변

이 답변은 Windows 7 / Windows Server에서 ArcGIS 10.1 64bit를 사용하는 Anaconda 64 비트 Python 배포에서 작동합니다. 아래에 주어진 팁 중 일부 (또는 모두)는 파이썬의 다른 Windows 배포판에 적용될 수 있습니다. 먼저 anaconda를 설치하면 C : \ Anaconda 디렉토리로 이동해야합니다. '시스템 기본 파이썬 만들기'확인란을 선택하십시오. 다른 파이썬이 설치되었다는 경고가 표시 될 수 있지만 계속하십시오. 그때:

설정 경로 및 환경 변수

먼저 DTBGGP64.pth 파일을 C : \ Python27 \ ArcGISx6410.1 \ Lib \ site-packages 에서 새 배포 디렉토리 ( C : \ Anaconda )로 복사하십시오 . 이름은 임의적이지만 확장명이 .pth 여야합니다 . 새 배포를 사용할 때 ArcPy를 가져올 수 있습니다. 참고 : DTBGGP64.pth 파일의 올바른 위치는 사이트 패키지 디렉토리에 있어야합니다 (예 : C : \ Anaconda \ Libs \ site-packages ). 이전 버전의 Anaconda에서는 최상위 디렉토리에 앉아 있으면 작동합니다. 다음으로 환경 변수를 확인해야합니다. 시스템 변수 경로에서, python 디렉토리의 기존 경로는 새 경로로 바꿔야합니다. (예 : C : \ Anaconda; C : \ Anaconda \ Scripts; ) 이것은 기본 python 디렉토리가있는 창을 알려줍니다. 사용자 변수 PYTHONPATH 도 올바른지 확인하십시오 . .pth 파일에 설명되어 있지 않거나 사이트 패키지에 설치되어있는 사용하려는 라이브러리를 가리켜 야 합니다 . IE 이것은 자체 개발 패키지이거나 다른 설치 위치를 가진 mapnik 과 같은 패키지 일 수 있습니다 .

레지스트리 설정 확인

일부 머신에서는 위의 내용으로 새 파이썬에서 arcpy를 사용할 수 있고 ArcGIS 내에서 파이썬을 사용할 수 있습니다. 다른 컴퓨터에서는 레지스트리 키를 확인해야 할 수도 있습니다. 다음 레지스트리 키에는 파이썬 설정이 있습니다.

HKEY_LOCAL_MACHINE \ SOFTWARE \ Python \ PythonCore \ 2.7 \ PythonPath
하나의 키가 있어야하며 그 값은 C : \ Anaconda \ Lib; C : \ Anaconda \ DLLs 여야합니다 (또는 Python 설치를위한 해당 폴더).

HKEY_LOCAL_MACHINE \ SOFTWARE \ Python \ PythonCore \ 2.7 \ InstallPath
키는 C : \ Anaconda 여야합니다 .

다른 파이썬 버전이 설치되어있을 수 있습니다 ...이 경우 위의 경로에서 버전 번호를 변경하십시오

HKEY_CLASSES_ROOT \ Python.CompiledFile \ DefaultIcon .pyc 파일에 사용할 .ico 파일의 위치입니다.

HKEY_CLASSES_ROOT \ Python.CompiledFile \ shell \ open \ command 셸에서 .pyc 파일을 열 때 실행되는 명령입니다. python.exe원하는 파이썬 버전의 위치로 경로를 변경해야합니다

HKEY_CLASSES_ROOT \ Python.File 여기의 키는 .py 파일에 적용된다는 점을 제외하고 Python.CompiledFile 의 키와 동일합니다. 다시, 관련 변경을 수행하십시오. 'IDLE로 편집'또는 'Pythonwin으로 편집'에 대한 추가 키가있을 수 있습니다. 이 키의 경로가 원하는 파이썬 버전을 가리 키도록 다시 변경하십시오.

HKEY_CLASSES_ROOT \ Python.NoConFile 이들은 Python.File 과 동일하지만 pythonw.exe적절한 위치 에서 프로그램을 가리켜 야합니다 .

HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ Python10.1 PythonDir의 이 ESRI에 의해 설치된 것으로 파이썬 설치로 유지하거나 새 설치를 가리 키도록하는 ArcMap의 등 내에서 사용하기에 파이썬 설치의 핵심 포인트는 ... 당신은 할 수 있습니다. 그것은 수 있습니다 새 파이썬 설치를 ArcMap을 가리키는 경우 다른 변화를 필요로한다. 새 배포에 의해 설치된 패키지 버전 (예 : numpy)에 문제 가있을 있습니다. 나는 아무 것도 경험하지 않았다.

내 작업의 대부분은 일반적으로 파이썬을 자체적으로 사용하고 때로는 아크 피에 액세스하기 때문에 관련이 없습니다. 나는 arcmap 내에서 파이썬을 거의 사용하고 싶지 않습니다. 따라서이 마지막 단계를 거의 테스트하지 않았지만 지금까지 시도한 모든 것에 대해 효과가있는 것 같습니다.

파이썬 (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


이것이 ArcGIS가 가진 모든 파이썬 의존성을 설치합니까? matplotlib, numpy, xlrd, xlwt 및 dateutil?
KHibma

예. 아나콘다 배포판의 경우, 전체 패키지 목록은 여기에서 확인할 수 있습니다 : docs.continuum.io/anaconda/pkgs.html Python (x, y) 또는 다른 배포판에 익숙하지 않습니다
James

2
ArcGIS (10.2 및 10.1)에는 numpy에 대한 특정 버전 요구 사항 이 있습니다. 1.6.1이어야합니다. 그렇지 않으면 arcpy를 중단 할 수 있습니다.
user2856

1
DTBGGP64.pth 파일의 내용을 추가하십시오! 많은 사용자들이 이것을 가지고 있지 않은 것 같습니다. :)
mmann1123

1
아나콘다의 정말 좋은 기능은 ArcGIS 또는 다른 패키지에 필요한 버전으로 가상 환경으로 설정할 수 있다는 것입니다. 예를 들어 Esri 도구가 기대하는 버전의 ArcGIS와 함께 작동하도록 ArcGIS와 작동하도록 가상 환경을 설정하고 arcgi 외부에서 완전히 작업 할 때 arcpy를 포함하지 않는 환경을 만들 수 있습니다.
커티스 가격

5

내 솔루션은 사용중인 파이썬 환경을 기반으로 경로 세트를 시작 스크립트를 설정하는 것입니다. 이 방법은 파이썬 설치에서 .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

다른 .py 스크립트에서 virtualenv에 대한이 strartup 스크립트를 어떻게 설정 / 호출합니까? 예를 들어, "arcpy.CopyFeatures_management ( 'myinput.shp', 'myoutput.shp')"인 .py 스크립트가있는 경우? 물론 단순화 된 예. 조언을위한 Thx
AlexS1

3

누구든지 ArcGIS Pro를 사용 하여이 작업을 수행하려는 경우 (예 : python 2 대신 python 3 사용) :

아나콘다 패키지 내에서 스파이더를 사용합니다. 이 작업을 수행하는 방법은 Spyder의 도구> Python 인터프리터로 이동 한 다음 Spyder를 현재 C : \ Program Files \ ArcGIS \ Pro \ bin \ Python \ Scripts \ propy.bat에있는 propy.bat 파일을 가리 키도록하는 것입니다.

이렇게하면 Spyder에서 올바른 Python 버전이 활성화되고 arcpy를 가져올 수 있습니다.


1

다음 코드를 사용하여 arcpy 및 종속 항목을 포함 하는 별도의 가상 환경 을 설정합니다 .

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.