28 votos

Cómo hacer una instalación de Python que se puede llamar de ArcGIS' arcpy?

Veo un montón de hilos preguntando cómo se puede crear una instalación de Python (por ejemplo, la Anaconda o Python XY distribución) que puede utilizar arcpy, mientras no 'romper' el original de ArcGIS para la instalación de python.

Tuve este mismo problema, y creo que he encontrado un 'universal' de la solución. Hasta ahora hemos hecho esto en alrededor de 8 equipos en el trabajo y funciona todo bien.

Así que la pregunta: ¿Cómo instalar una distribución de Python independiente que se puede utilizar ArcGIS?

38voto

unixbhaskar Puntos 99

EDICIÓN: 2015 Solución

Mi solución es utilizar un pequeño módulo que se va a la caza de ArcGIS en su PC. Una vez que encuentre agrega las rutas correctas para el medio ambiente, de modo que usted puede importar arcpy. El uso va como esto:

try:
    import archook #The module which locates arcgis
    archook.get_arcpy()
    import arcpy
except ImportError:
    # do whatever you do if arcpy isnt there.

El módulo está alojado en github aquí: https://github.com/JamesRamm/archook

Es muy sencillo y estoy seguro de que puede ser más robusto, pero hace el trabajo. Tengo la intención de hacerlo disponible en pypi..

Tiene un par de ventajas sobre los más 'manual' método original:

  1. Usted no necesita configurar cada ambiente python por separado...sólo tiene que importar el módulo y listo
  2. No editar/crear las claves del registro o permanentes, variables de entorno, por lo que no hay ninguna posibilidad de echar a perder cualquier existentes python/arcgis configuración.
  3. Usted no necesita saber nada acerca de las rutas de acceso a diferentes carpetas/archivos, o incluso qué versión de arcgis que ha instalado. El módulo se encuentra de todo.

He dejado la respuesta original a continuación, pero esta nueva solución es (OMI) 100% mejor.


2014 responder

Ok, así que esta respuesta obras para la Anaconda 64 bits, distribución de Python con ArcGIS 10.1 de 64 bits en Windows 7/Windows Server. Algunos (o todos) de los consejos que se dan a continuación pueden aplicar a cualquier otro tipo de ventanas de distribución de python. En primer lugar, instale anaconda, que debe ir en el directorio C:\Anaconda. Marque la casilla 'hacer que el sistema por defecto de python'. Se puede dar una advertencia de que hay otro python instalado, pero continuar. Entonces:

La instalación de los Caminos y de las Variables de Entorno

La primera cosa a hacer es copiar el DTBGGP64.la pth archivo para el nuevo directorio de distribución (C:\Anaconda) de C:\Python27\ArcGISx6410.1\Lib\site-packages. La nomenclatura es arbritrary, pero debe tener la .la pthextensión Esto permitirá la importación de ArcPy cuando se utiliza la nueva distribución. Nota: La ubicación correcta de la DTBGGP64.la pth archivo debe estar en el sitio-directorio de paquetes (por ejemplo, C:\Anaconda\Libs\site-packages). He encontrado que con algunas versiones anteriores de Anaconda, funciona si se sentó en el directorio de nivel superior Siguiente, las variables de entorno debe ser verificado: En la variable de sistema Path, la ruta de acceso al directorio de python debe ser reemplazado con el nuevo trazado. (por ejemplo, C:\Anaconda;C:\Anaconda\Scripts;) Esto le dirá a windows, donde el valor predeterminado directorio de python. Asegúrese de que la variable de usuario PYTHONPATH también es correcta. Este debe apuntar a cualquiera de las librerías que desea utilizar no los describen .la pth archivos o están instalados en sitio-paquetes. I. E este podría ser tu propia paquetes de desarrollo, o paquetes como mapnik que tienen una ubicación diferente de la instalación.

Compruebe La Configuración Del Registro

En algunas máquinas, el de arriba puede ser suficiente para asegurar que usted puede utilizar arcpy de la nueva python y python puede ser utilizado dentro de ArcGIS. En otras máquinas, puede que tenga que comprobar las claves del registro. Las siguientes claves del registro han python configuración:

HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.7\PythonPath
Debe haber una clave y su valor debe ser C:\Anaconda\Lib;C:\Anaconda\DLLs (O las carpetas correspondientes para su instalación de python)

HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\2.7\InstallPath
La clave debe ser C:\Anaconda

Usted puede tener otras versiones de python instaladas...en cuyo caso cambia el número de versión en el anterior caminos

HKEY_CLASSES_ROOT\Python.CompiledFile\DefaultIcon Esta es la ubicación de la .ico archivo a utilizar para .pyc archivos

HKEY_CLASSES_ROOT\Python.CompiledFile\shell\open\command Este es el comando para emitir la hora de abrir una .pyc archivo desde el shell. Usted debe cambiar el python.exe ruta a la ubicación en la que desea la versión de python

HKEY_CLASSES_ROOT\Python.Archivo Las claves aquí son los mismos que los de Python.CompiledFile excepto que se aplican a un .py archivo. De nuevo, hacer los cambios pertinentes. Se puede tener una llave extra para 'Editar con IDLE' o 'Editar con Pythonwin'. De nuevo, hacer los cambios pertinentes para que los caminos de estas claves punto a su deseada de la versión de python.

HKEY_CLASSES_ROOT\Python.NoConFile Estos son los mismos que para Python.Archivo, sino que debe apuntar a la pythonw.exe programa donde corresponda.

HKEY_LOCAL_MACHINE\SOFTWARE\ESRI\Python10.1
El PythonDir de los puntos clave para la instalación de python para usar dentro de ArcMap etc.. Usted puede desear para esto quede como la instalación de python instalado por ESRI, o punto a su nueva instalación. Se pueden requerir otros cambios si el punto en ArcMap para la nueva instalación de python. No puede haber problemas con las versiones de los paquetes (por ejemplo, numpy) instalado por la nueva distribución. No he encontrado ninguna.

Para la mayoría de mi trabajo, esto es irrelevante, ya que normalmente se desea utilizar python en propia y que de vez en cuando tiene acceso a arcpy. Yo rara vez deseen utilizar python desde dentro de arcmap..por lo Tanto he hecho pocas pruebas de este paso final, pero parece que funciona todo lo que he probado hasta ahora.

Me imagino que el proceso sería similar para la instalación de Python(x,y) etc.

Otras notas

El contenido de el .la pth es un archivo de la lista de rutas de acceso que apunta a las siguientes carpetas en su instalación de ArcGIS: bin64, arcpy, ArcToolbox\Scripts Por ejemplo, mi .la pth archivo contiene lo siguiente:

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

6voto

Lazer Puntos 3926

Mi solución es crear un script de inicio que establece la ruta de acceso basado en python ambiente que se está utilizando. Este método tiene la (gran) ventaja de que no necesita acceso de administrador a escribir .la pth archivos en python instalaciones. Este script es el programa de instalación para uso tanto de 32 bits y de 64 bits Anaconda y 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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X