ArcGIS Server 提供了针对命令行 ArcPy 脚本使用 Python 3 运行时的选项。 Python 3.x 已随 ArcGIS Server 安装,但您可以安装单独的 Python 3 运行时包,此运行时包可简化通过 ArcGIS Server 使用 Python 3 的操作。
注:
ArcGIS Server 10.9.1 版本之后,仅支持 Python 3,不提供 Python 2.7 安装。
入门
Python 提供了第三方库,以供您在 ArcGIS 中使用,但是管理安装哪些软件包却是一项复杂费时的任务,特别是在使用多个工程或者尝试与他人共享代码时尤为如此。 要针对 Linux 简化 Python 3 运行时在 ArcGIS Server 上的使用,可使用 conda 下载并安装 arcgis-server-py3 包。
如果您还没有 conda,则可从 Anaconda 网站进行下载。
若要访问 ArcGIS Python 功能,包括 ArcPy,可以安装 arcgis-server-py3 软件包。 在 conda 环境中,请使用以下命令安装 Python 3:
conda install -c esri arcgis-server-py3=<version>
<version> 值将指示库的当前版本,该版本与您的 ArcGIS Server 当前版本相同,格式为 n.n.n,例如,ArcGIS Server 10.9.1:
conda install -c esri arcgis-server-py3=10.9.1
安装 arcgis-server-py3 软件包会添加 ArcPy,其中包括支持的地理处理工具和所有第三方要求。
如果未安装 arcgis-server-py3 包,当运行在 ArcGIS Server 安装目录中安装到 /arcgis/server/framework/runtime/ArcGIS/bin/Python/envs/arcgispro-py3/ 的 python.exe 文件时,必须调用 Wine。
迁移
与 ArcGIS Server 结合使用 Python 3 运行时的方式与 ArcGIS Server 以及包括 ArcMap 在内的其他 ArcGIS 产品结合使用 Python 2 的方式不同。 需要适应两个主要差异:ArcPy 中的差异以及 Python 版本的变更。
对 ArcPy 中的功能所做的更改
对于 ArcGIS Server,许多地理处理工具将继续在 Python 3 运行时中可用,然而,有一些将无法使用。 不包含 Parcel Fabric (ArcMap)、Schematics 以及 Tracking Analyst 工具箱中所含的工具。 其他工具箱中的其他工具也不可用。 有关受支持地理处理工具的完整列表,请参阅 arcgis-server-py3 软件包中的 readme 文件。
arcpy.mapping 模块已被移除,并且已经在 ArcGIS Pro 中替换为 arcpy.mp 模块。 arcpy.na 模块同样包含更改,多个更改与从 arcpy.mapping 到 arcpy.mp 的更改相关联。
Python 版本更改
ArcGIS Server Python 运行时使用 Python 3。这是重大变化;Python 3 产品线版本与 Python 2 产品线不兼容。 虽然从根本上说,大部分语言内容是相同的,但许多关键细节发生了很大变化,包括字符串和字典的工作原理以及标准库的组织方式。
目前,Python 社区已经将大部分重要的第三方库移植到了 Python 3 上,并且在 Python 社区中,达成了这样的共识,即所有新的开发工程都将在 Python 3 中完成。
由于 10.9.1 是包含 Python 2.7 的最后一个版本,因此需要开始更新 Python 代码以在 Python 3 中使用。 如果您正在对代码执行从 Python 2 到 Python 3 的单向转换,可以使用 2to3 命令行实用程序自动执行大部分的过程。 要特别注意的是,2to3 虽然是极佳的工具,但是它并不是完整的解决方案(有时估计为 95% 有效的解决方案),并且可能有必要对其进行其他更改。
请记住,更简单的 Python 脚本可能不需要任何更改,也可以正常运行。