ArcGIS Server 包括适用于 64 位 Windows 的 Python 2.7。 在 ArcGIS Enterprise 10.5 和更高版本中,ArcGIS Server 包含一个基于Python 3 的 conda 环境。
ArcGIS Server 的 Python 安装还包括其他包,如 numpy 和 matplotlib。 但是,如需安装其他自定义 Python 包,请按照以下步骤操作。
从 ArcGIS Pro 发布的服务
与 ArcGIS Pro 相似,ArcGIS Server 使用 conda 来管理 Python 环境。 从 ArcGIS Server 10.7.1 开始,您可以为所有地理处理服务指定 Python 环境。 从 ArcGIS Server 10.8.1 开始,您可以为单个地理处理服务指定 Python 环境。
以下步骤适用于从 ArcGIS Pro 发布的或使用 arcpy 发布的地理处理服务。 有关 ArcGIS Pro 中 Python 环境的详细信息,请参阅 ArcGIS Pro 中的 Python。 建议您克隆默认 Python 环境以进行更新。 一次只能激活一个 ArcGIS Server 的 Python 环境。
有关使用 conda 的其他信息,请参阅 conda 简介。
注:
如果所用的克隆环境是在应用 ArcGIS Server log4j 修补程序之前创建的,则运行 conda activate your_environment 激活环境,然后运行 conda update saspy 解决在克隆环境中与旧版 saspy 搭配使用的 log4j 的安全漏洞。 如果已安装该修补程序,在克隆默认环境时包含 --pinned 标志,有关详细信息,请参阅以下说明。 在激活克隆环境后,运行 conda update saspy 确保克隆环境中不会存在 log4j 安全漏洞。
为所有地理处理服务指定 Python 环境
要将第三方 Python 包与 ArcGIS Server 一起部署,请对您站点中的每台计算机使用以下步骤:
- 使用 ArcGIS Server 帐户登录到 ArcGIS Server 计算机,然后以管理员身份打开命令提示符窗口。
- 将目录更改为 <install>\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\Scripts。
- 使用命令 conda create --clone arcgispro-py3 --prefix "<install>\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\envs\newenvname" --pinned --no-shortcuts 在 ArcGIS Server 安装程序的 Python 环境目录中以新环境名称(例如 newenvname)克隆服务器的默认 Python 环境。 将前缀替换为您的安装目录和新的环境名称。
- 要激活克隆环境,请运行 proswap newenvname。
- 通过运行 conda install 来安装第三方 Python 软件包。 如果 conda install 不可用,则仅可使用 pip install。
- 重新启动 Windows 任务管理器服务选项卡上的 ArcGIS Server 服务或 Windows 服务。 所有服务重新返回在线状态需要一些时间。
- 如果适用,请在 ArcGIS Server 站点中的每台计算机上重复步骤 1 至 6。
要将更多包添加到现有 conda 环境,请按照下列步骤操作:
- 登录到 ArcGIS Server 计算机。 您可能需要具有管理权限的账户。
- 从开始菜单中打开 Python 3 命令提示符。 该提示符可能在 ArcGIS Server 文件夹中,具体取决于您的操作系统。
- 针对需要部署的软件包,运行 conda install。 如果 conda install 不可用,则仅可使用 pip install。
- 在 ArcGIS Server Manager 中重新启动地理处理服务。
- 或者,重新启动 Windows 任务管理器服务选项卡上的 ArcGIS Server 服务。 所有服务将在几分钟内返回到在线状态。
- 如果适用,请在 ArcGIS Server 站点中的每台计算机上重复步骤 1 至 5。
为单个地理处理服务指定 Python 环境
克隆服务器默认的 Python 环境,安装第三方 Python 包,并使用以下步骤编辑地理处理服务的服务属性:
- 登录到您的 ArcGIS Server 计算机,然后从开始菜单打开 Python 3 命令提示符。 建议您以管理员身份运行该命令提示符,否则可能无法将环境克隆到某些目录。
- 使用命令 conda create --clone arcgispro-py3 --prefix "<install>\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\envs\newenvname" --pinned --no-shortcuts 在 ArcGIS Server 安装程序的 Python 环境目录中以新环境名称(例如 newenvname)克隆服务器的默认 Python 环境。 将前缀替换为您的安装目录和新的环境名称。 要将环境克隆到 ArcGIS Server 安装目录之外的任何其他目录,请运行 conda create --clone arcgispro-py3 --prefix "<fullpath>\outsideenvname" --pinned --no-shortcuts。
- 使用 activate newenvname 在命令提示符窗口中激活新环境。 如果您使用的是 ArcGIS Server 安装程序的 Python 环境目录之外的目录,请使用 activate <fullpath>\outsideenvname 提供克隆环境的完整路径。
- 使用 conda install packagename=version 安装 Python 包。 可供选择的最佳做法是,将发布过程中在 ArcGIS Pro 中使用的包版本与服务器上安装的包版本保持一致。
- 所有包安装完成后,请转至 ArcGIS Server 管理员目录。 在页面底部的资源中,转至服务。
- 选择要为其指定 Python 环境的地理处理服务。
- 在位于页面底部的受支持的操作中,单击编辑。
- 在服务 JSON 中,当您的克隆环境位于 ArcGIS Server 安装程序的 Python 环境目录中时,请将键值对 "condaEnvironmentPath": "newenvname" 添加到服务属性中。 如果您使用的是 ArcGIS Server 安装程序的 Python 环境目录之外的目录,请提供克隆环境的完整路径。
Simplified service properties with a cloned Python environment in the ArcGIS Server installation's Python environment directory.
{ "serviceName": "gvonly", "type": "GPServer", "description": "", "allowedUploadFileTypes": "", "properties": { "toolbox": "C:\\arcgisserver\\directories\\arcgissystem\\arcgisinput\\gvonly.GPServer\\extracted\\p20\\gvonly.tbx", "condaEnvironmentPath": "newenvname", "showMessages": "INFO" }, "portalProperties": { "isHosted": false, "portalItems": [{ "itemID": "4921223df97744a593d0b776666b9da9", "type": "GPServer" }] }, "extensions": [{ "typeName": "WPSServer", "properties": { "serviceType": "", "name": "" } }], "frameworkProperties": {}, "datasets": [] }
- 单击保存编辑内容按钮以保存编辑内容。
- 您的服务会自动重新启动。
从 ArcGIS Desktop 发布的服务
以下步骤适用于从 ArcMap 和基于 Python 2.7 的 arcpy 模块发布的地理处理服务。 对 ArcGIS Server 站点中的每台计算机执行这些步骤。 该包将安装到服务器的默认 Python 2.7,并将应用于从 ArcGIS Desktop 发布的所有服务。
- 下载要安装的 Windows 64 位版本的第三方包。
- 双击 .msi 或 .exe 文件来安装包。
自定义包通常安装在 C:\Python27\ArcGISx6410.8\lib\site-packages 目录下。
为从 ArcGIS Desktop 发布的服务测试自定义 Python 软件包
要测试是否正确安装了包,请编写导入所安装的包的 Python 脚本,然后运行脚本。 如果不熟悉如何运行独立脚本,请按照以下步骤操作。
- 打开终端窗口。
- 以脚本作为参数运行服务器的 Python 2.7,例如:<ArcGISServer_InstallDir>/arcgis/server/tools/python ~/projectX/mytestscript.py。
注:
在 ArcGIS Server (Linux) 安装过程中安装的 Python 库是适用于 64 位 Windows 的 Python。 因此,访问数据和其他 Python 模块时,您应在独立 Python 脚本中始终使用 Windows 路径分隔符 (\)。 此外,还应注意 Z:\ 目录映射到 Linux 系统的 /。 在 Python 脚本中,可以使用 Z:\ 映射访问数据和其他 Python 模块。 例如,可以通过 z:\myuser\myproject\data 访问 /myuser/myproject/data 中的数据。
这不适用于通过 ArcGIS Desktop 发布的 Python 脚本,因为会在发布过程中将所有路径转换为正确的格式。