Skip To Content

为 ArcGIS Server 部署自定义 Python 包

ArcGIS Server 包括适用于 64 位 Windows 的 Python 2.7。 在 ArcGIS Enterprise 10.5 和更高版本中,ArcGIS Server 包含一个基于Python 3 的 conda 环境。

ArcGIS ServerPython 安装还包括其他包,如 numpymatplotlib。 但是,如需安装其他自定义 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 ProPython 环境的详细信息,请参阅 ArcGIS Pro 中的 Python。 建议您克隆默认 Python 环境以进行更新。 一次只能激活一个 ArcGIS ServerPython 环境。

有关使用 conda 的其他信息,请参阅 conda 简介

注:

如果所用的克隆环境是在应用 ArcGIS Server log4j 修补程序之前创建的,则运行 conda activate your_environment 激活环境,然后运行 conda update saspy 解决在克隆环境中与旧版 saspy 搭配使用的 log4j 的安全漏洞。 如果已安装该修补程序,在克隆默认环境时包含 --pinned 标志,有关详细信息,请参阅以下说明。 在激活克隆环境后,运行 conda update saspy 确保克隆环境中不会存在 log4j 安全漏洞。

为所有地理处理服务指定 Python 环境

要将第三方 Python 包与 ArcGIS Server 一起部署,请对您站点中的每台计算机使用以下步骤:

  1. 使用 ArcGIS Server 帐户登录到 ArcGIS Server 计算机,然后以管理员身份打开命令提示符窗口。
  2. 将目录更改为 <install>\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\Scripts
  3. 使用命令 conda create --clone arcgispro-py3 --prefix "<install>\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\envs\newenvname" --pinned --no-shortcutsArcGIS Server 安装程序的 Python 环境目录中以新环境名称(例如 newenvname)克隆服务器的默认 Python 环境。 将前缀替换为您的安装目录和新的环境名称。
  4. 要激活克隆环境,请运行 proswap newenvname
  5. 通过运行 conda install 来安装第三方 Python 软件包。 如果 conda install 不可用,则仅可使用 pip install
  6. 重新启动 Windows 任务管理器服务选项卡上的 ArcGIS Server 服务或 Windows 服务。 所有服务重新返回在线状态需要一些时间。
  7. 如果适用,请在 ArcGIS Server 站点中的每台计算机上重复步骤 1 至 6。

要将更多包添加到现有 conda 环境,请按照下列步骤操作:

  1. 登录到 ArcGIS Server 计算机。 您可能需要具有管理权限的账户。
  2. 从开始菜单中打开 Python 3 命令提示符。 该提示符可能在 ArcGIS Server 文件夹中,具体取决于您的操作系统。
  3. 针对需要部署的软件包,运行 conda install。 如果 conda install 不可用,则仅可使用 pip install
  4. ArcGIS Server Manager重新启动地理处理服务
  5. 或者,重新启动 Windows 任务管理器服务选项卡上的 ArcGIS Server 服务。 所有服务将在几分钟内返回到在线状态。
  6. 如果适用,请在 ArcGIS Server 站点中的每台计算机上重复步骤 1 至 5。

为单个地理处理服务指定 Python 环境

克隆服务器默认的 Python 环境,安装第三方 Python 包,并使用以下步骤编辑地理处理服务的服务属性:

  1. 登录到您的 ArcGIS Server 计算机,然后从开始菜单打开 Python 3 命令提示符。 建议您以管理员身份运行该命令提示符,否则可能无法将环境克隆到某些目录。
  2. 使用命令 conda create --clone arcgispro-py3 --prefix "<install>\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\envs\newenvname" --pinned --no-shortcutsArcGIS Server 安装程序的 Python 环境目录中以新环境名称(例如 newenvname)克隆服务器的默认 Python 环境。 将前缀替换为您的安装目录和新的环境名称。 要将环境克隆到 ArcGIS Server 安装目录之外的任何其他目录,请运行 conda create --clone arcgispro-py3 --prefix "<fullpath>\outsideenvname" --pinned --no-shortcuts
  3. 使用 activate newenvname 在命令提示符窗口中激活新环境。 如果您使用的是 ArcGIS Server 安装程序的 Python 环境目录之外的目录,请使用 activate <fullpath>\outsideenvname 提供克隆环境的完整路径。
  4. 使用 conda install packagename=version 安装 Python 包。 可供选择的最佳做法是,将发布过程中在 ArcGIS Pro 中使用的包版本与服务器上安装的包版本保持一致。
  5. 所有包安装完成后,请转至 ArcGIS Server 管理员目录。 在页面底部的资源中,转至服务
  6. 选择要为其指定 Python 环境的地理处理服务。
  7. 在位于页面底部的受支持的操作中,单击编辑
  8. 在服务 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": []
    }
  9. 单击保存编辑内容按钮以保存编辑内容。
  10. 您的服务会自动重新启动。

ArcGIS Desktop 发布的服务

以下步骤适用于从 ArcMap 和基于 Python 2.7 的 arcpy 模块发布的地理处理服务。 对 ArcGIS Server 站点中的每台计算机执行这些步骤。 该包将安装到服务器的默认 Python 2.7,并将应用于从 ArcGIS Desktop 发布的所有服务。

  1. 下载要安装的 Windows 64 位版本的第三方包。
  2. 双击 .msi.exe 文件来安装包。

自定义包通常安装在 C:\Python27\ArcGISx6410.8\lib\site-packages 目录下。

为从 ArcGIS Desktop 发布的服务测试自定义 Python 软件包

要测试是否正确安装了包,请编写导入所安装的包的 Python 脚本,然后运行脚本。 如果不熟悉如何运行独立脚本,请按照以下步骤操作。

  1. 打开终端窗口。
  2. 以脚本作为参数运行服务器的 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 脚本,因为会在发布过程中将所有路径转换为正确的格式。