同样的问题,我想我已经找到了“通用”解决方案。到目前为止,我们已经在大约8台工作的计算机上完成了此操作,并且一切正常。
如何安装可以使用ArcGIS的单独的Python发行版?
#1 楼
我创建了一个小模块(相对流行),该模块可以关闭并在您的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
与“手动”原始方法(以下详细介绍)相比,它具有一些优点:
您不需要分别配置每个python环境...只需导入模块,然后就可以使用
它不会编辑/创建任何注册表项或永久性环境变量,因此没有机会搞乱任何现有的python / arcgis组态。
您无需了解各种文件夹/文件的路径,甚至无需了解已安装的Arcgis版本。该模块将为您找到所有功能。
无需管理员身份验证
与anaconda无关-它可以与任何python安装一起使用
我在下面留下了原始答案,但此解决方案(IMO)改善了100%。
2014年答案
好,因此此答案适用于Anaconda 64位Python发行版Windows 7 / Windows Server上的ArcGIS 10.1 64位版本。
以下给出的一些(或全部)技巧可能适用于python的任何其他Windows发行版。
首先,安装anaconda,它应该转到目录C:\ Anaconda。选中“将系统设为默认python”框。它可能会警告您安装了另一个python,但请继续。然后:
设置路径和环境变量
要做的第一件事是将DTBGGP64.pth文件复制到新的分发目录(C:\ Anaconda ),从C:\ Python27 \ ArcGISx6410.1 \ Lib \ site-packages。
命名是任意的,但必须具有.pth扩展名
使用新发行版时,这将允许您导入ArcPy。
注意:DTBGGP64.pth文件的正确位置应该在site-packages目录中(例如C:\ Anaconda \ Libs \ site-packages)。我发现对于某些较旧版本的Anaconda,如果位于顶层目录中,则可以使用
下一步,必须检查环境变量:
在系统变量Path中,python目录的现有路径应该用新路径替换。 (例如C:\ Anaconda; C:\ Anaconda \ Scripts;)
这将告诉Windows默认python目录在哪里。
确保用户变量PYTHONPATH也正确。这应该指向您希望使用的任何库,这些库未由.pth文件描述或未安装在站点程序包中。即IE,这可能是您自己的开发包,也可能是Mapnik等安装位置不同的包。
检查注册表设置
在某些计算机上,上述内容可能足以确保可以使用新python中的arcpy,并且可以在ArcGIS中使用python。
在其他计算机上,您可能需要检查注册表项。
以下注册表项具有python设置:
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
您可能还安装了其他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
此处的键与适用于的Python.CompiledFile相同。 py文件。再次进行相关更改。
它可能具有用于“使用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
#2 楼
我的解决方案是设置一个启动脚本,该脚本根据您使用的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
评论
您如何在其他.py脚本中为virtualenv设置/调用此strartup脚本?例如,如果您只有一个.py脚本为“ arcpy.CopyFeatures_management('myinput.shp','myoutput.shp')”?当然是简化的例子。感谢任何建议
– AlexS1
19年7月17日在15:14
#3 楼
如果有人尝试使用ArcGIS Pro(即使用python 3而不是python 2)进行此操作:我在anaconda软件包中使用了spyder。我使用此方法的方法是转到Spyder中的“工具”>“ Python解释器”,然后将Spyder指向当前位于C:\ Program Files \ ArcGIS \ Pro \ bin \ Python \ Scripts \ propy.bat的propy.bat文件。
这会在Spyder中激活正确的python版本,并允许您导入arcpy。
评论
这会安装ArcGIS具有的所有Python依赖项吗? matplotlib,numpy,xlrd,xlwt和dateutil?
–KHibma
14年2月18日在14:41
是。对于anaconda发行版,可以在此处找到软件包的完整列表:docs.continuum.io/anaconda/pkgs.html我对Python(x,y)或其他发行版不熟悉
–詹姆斯
2014-2-18 14:43
不要忘记,ArcGIS(10.2和10.1)对numpy有非常特定的版本要求-必须为1.6.1,否则您可以破坏arcpy。
–user2856
2014-02-18 23:22
请添加DTBGGP64.pth文件的内容!许多用户似乎没有这个。 :)
–mmann1123
14-10-28在21:29
anaconda的一个非常不错的功能是,您可以使用ArcGIS或任何其他软件包所需的版本在虚拟环境中进行设置。例如,您可以设置一个虚拟环境以与ArcGIS一起使用,该虚拟环境具有Esri工具期望的版本,而另一个环境则完全不在arcgis内工作时不包含arcpy。
– Curtis价格
15年2月13日在18:31