为 ArcGIS Server 部署自定义 Python 包
ArcGIS Server 包含一个基于 Python 3 的 conda 环境。 ArcGIS Server 的 Python 安装还包括其他包,如 numpy 和 matplotlib。 但是,如果您希望为脚本工具和 Python 工具箱安装其他自定义 Python 包,请按照以下步骤操作。 与 ArcGIS Pro 相似,ArcGIS Server 使用 conda 来管理 Python 环境。 有关使用 conda 的其他信息,请参阅 conda 简介。
有关 ArcGIS Pro 中 Python 环境的详细信息,请参阅 ArcGIS Pro 中的 Python。 建议您克隆默认 Python 环境以进行更新。
一次仅能有一个应用于所有地理处理服务的 Python 环境处于活动状态。 如果地理处理服务需要各自的自定义 Python 环境,您可以为单个服务指定 Python 环境。
克隆环境时,确保 ArcGIS Server 账户拥有克隆环境的读取和执行权限,否则 Python 无法初始化,工具中的 Python 代码也无法运行。
卸载时,您需要手动管理克隆环境。 升级 ArcGIS Server 后,你还需要使用 proup 命令手动升级克隆的 Python 环境。
为所有地理处理服务指定 Python 环境
要在 ArcGIS Server 上为所有地理处理服务部署第三方 Python 包,请在站点中的每台计算机上执行以下步骤:
注:
这也会更改系统地理处理服务的 Python 环境。
使用 ArcGIS Server 账户登录 ArcGIS Server 计算机,或使用对默认 Python 环境和克隆环境目标目录具有访问权限的账户。
启动 Wine 资源管理器,准备克隆默认环境。
运行以下命令:
source <install>/framework/etc/arcenv wine cmd激活 Wine 后,使用以下命令克隆环境:
注:
命令
conda-proclone不需要 Internet 访问权限。注:
请确保 ArcGIS Server 账户对克隆环境具有读写权限。
注:
默认环境通常位于
<install>\framework\runtime\ArcGIS\bin\Python\envs\arcgispro-py3。cd "Z:\data\arcgis\server\framework\runtime\ArcGIS\bin\Python\Scripts" conda-proclone -i <path to default environment> <path to cloned environment>了解有关
conda-proclone的详细信息,请运行conda-proclone -h。在 Wine 命令行中运行
activate <path to cloned environment>,激活克隆环境。在 Wine 命令行中,将自定义包安装到已激活的克隆环境中。
注:
大多数第三方 Python 包可以运行,但是,如果程序包进行 WIN32 调用(直接或间接与 Windows 操作系统交互),即使配置成功,这些程序包也无法正常运行。
以下命令是安装
flaskPython 包的示例。conda install flask在 Wine 命令行中,使用以下命令将您的服务器切换至克隆环境:
conda proswap -n <cloned environment> --all-users`注:
如果会话中使用的是 ArcGIS Server 账户,则无需使用
--all-users命令。 如果在默认~\Python\envs文件夹外部复制克隆环境,请提供该环境的完整路径。注:
切换后,所有地理处理服务(包括系统地理处理服务)均将使用该克隆环境。
重启 ArcGIS Server 服务。
启动新会话,或使用
exit()退出 Wine 命令行。注:
startserver和stopserver脚本位于 ArcGIS Server 安装目录的scripts目录中。对于多机部署,请在 ArcGIS Server 站点的所有其他计算机上重复以上步骤。
为单个地理处理服务指定 Python 环境
请按照以下步骤为单个地理处理服务设置环境。
使用 ArcGIS Server 账户登录 ArcGIS Server 计算机,或使用对默认 Python 环境和克隆环境目标目录具有访问权限的账户。
启动 Wine 资源管理器,准备克隆默认环境。
运行以下命令:
source <install>/framework/etc/arcenv wine cmd激活 Wine 后,使用以下命令克隆环境:
注:
命令
conda-proclone不需要 Internet 访问权限。注:
请确保 ArcGIS Server 账户对克隆环境具有读写权限。
注:
默认环境通常位于
<install>\framework\runtime\ArcGIS\bin\Python\envs\arcgispro-py3。cd "<path to server install>\framework\runtime\ArcGIS\bin\Python\Scripts" conda-proclone -i <path to default environment> <path to cloned environment>了解有关
conda-proclone的详细信息,请运行conda-proclone -h。在 Wine 命令行中运行
activate <path to cloned environment>,激活克隆环境。在 Wine 命令行中,将自定义包安装到已激活的克隆环境中。
注:
大多数第三方 Python 包可以运行,但是,如果程序包进行 WIN32 调用(直接或间接与 Windows 操作系统交互),即使配置成功,这些程序包也无法正常运行。
以下命令是安装
flaskPython 包的示例。conda install flask所有包安装完成后,请转至 ArcGIS Server Administrator Directory,然后单击服务资源。
选择要为其指定 Python 环境的地理处理服务。
在位于页面底部的受支持的操作中,单击编辑。
在服务 JSON 中,将键值对
"condaEnvironmentPath": "<full path to cloned-env>"添加到服务属性中。注:
如果您使用的是 ArcGIS Server 安装目录的 Python 环境目录之外的目录,则必须提供该克隆环境的完整路径。
以下是包含
condaEnvironmentPath属性的简化服务属性 JSON:{ "serviceName": "regionalAnalysis", "type": "GPServer", "description": "", "allowedUploadFileTypes": "", "properties": { "toolbox": "Z:\\data\\arcgis\\arcgisserver\\directories\\arcgissystem\\arcgisinput\\Analysis.GPServer\\extracted\\p30\\RegionalAnalysis.tbx", "condaEnvironmentPath": <"path to cloned environment">, "showMessages": "INFO" }, "portalProperties": { "isHosted": false, "portalItems": [{ "itemID": "4921223df97744a593d0b776666b9da9", "type": "GPServer" }] }, "extensions": [{ "typeName": "WPSServer", "properties": { "serviceType": "", "name": "" } }], "frameworkProperties": {}, "datasets": [] }单击保存编辑内容按钮以保存编辑内容。
该服务将自动重新启动。
ArcGIS Server 升级后升级克隆 Python 环境
以往,将 ArcGIS Server 升级到新版本时,需要弃用之前克隆的环境。 然后,您需要从已升级的 ArcGIS Server 克隆 Python 环境并重新配置您的服务。
在 ArcGIS Server 12.1 及更高版本中,可执行以下步骤,使用 conda proup 命令升级早期版本的 ArcGIS Server 的克隆 Python 环境:
以 ArcGIS Server 账户或对克隆环境及服务器安装具有访问权限的账户登录 ArcGIS Server 计算机。
启动 Wine 命令行,并将目录更改为
<install>\server\framework\runtime\ArcGIS\bin\Python\Scripts。运行
conda proup -n <environment name>或conda proup -p <environment directory path>以升级环境。Python 环境升级后,请重新启动此 conda 环境使用的所有地理处理服务,或者重新启动 ArcGIS Server 服务。
有关 conda proup 命令的详细信息,请使用 conda proup --help。 ArcGIS Server 降级后,无法使用此功能降级环境。 该功能在离线环境中不可用。
为所有地理处理服务指定 Python 环境
要在 ArcGIS Server 上为所有地理处理服务部署第三方 Python 包,请在站点中的每台计算机上执行以下步骤: 请注意,这也会更改系统地理处理服务的 Python 环境。
登录到 ArcGIS Server 计算机,然后以管理员身份打开命令提示符窗口。
注:
根据现有 conda 环境的位置,可能需要管理权限。
将目录更改为
<install>\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\Scripts。使用
conda create或conda proclone克隆服务器的默认 Python 环境并命名新环境:注:
建议将其放置在 ArcGIS Server 安装目录的 Python 环境目录中。 或者,可以指定 ArcGIS Server 账户具有访问权限的其他位置。
- 使用以下命令通过
conda create克隆环境:
conda create --clone arcgispro-py3 --prefix <"cloned environment path"> --pinned --no-shortcuts在 12.1 及更高版本中,当 ArcGIS Server 不具有 Internet 访问权限时或如果您更倾向于本地复制现有环境以加快处理速度,请使用
conda proclone克隆环境。 您可以使用其他现有 Python 环境路径替换arcigspro-py3,作为待克隆的输入环境。`conda proclone <"cloned environment path"> --input-env arcgispro-py3`
- 使用以下命令通过
要激活克隆环境,请运行
conda proswap -n <new environment name> --all-users。注:
如果您以 ArcGIS Server 账户用户的身份登录到计算机上,则
--all-users为可选参数;否则,它是必需参数。注:
如果克隆 conda 环境位于
{ServerInstallation}\framework\runtime\ArcGIS\bin\Python\envs\之外,请使用conda proswap -p "<full-path-to-cloned-directory>" --all-users提供该位置的完整路径。通过运行
conda install来安装第三方 Python 包。注:
如果
conda install不可用,则仅可使用pip install。重新启动 ArcGIS Server 服务。
注:
所有服务重新返回在线状态需要一些时间。
对于多机部署,请在 ArcGIS Server 站点中的所有其他计算机上重复步骤 1 至 6。
添加更多包
要将更多包添加到现有 conda 环境,请按照下列步骤操作:
登录 ArcGIS Server 计算机。 根据现有 conda 环境的位置,可能需要管理权限。
从开始菜单中打开 Python 3 命令提示符。 该提示符可能在 ArcGIS Server 文件夹中,具体取决于您的操作系统。 如果其未在开始菜单中列出,则可以在
<install>\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\Scripts上运行proenv.bat。针对需要部署的包,运行
conda install。注:
如果
conda install不可用,则仅可使用pip install。在 ArcGIS Server Manager 中重新启动地理处理服务。
(可选)重启 ArcGIS Server 服务。
注:
所有服务将在几分钟内重新启动。
对于多机部署,请在 ArcGIS Server 站点的每台计算机上重复步骤 1 至 5。
为单个地理处理服务指定 Python 环境
克隆服务器默认的 Python 环境,安装第三方 Python 包,并使用以下步骤编辑地理处理服务的服务属性:
登录 ArcGIS Server 计算机,然后从开始菜单打开 Python 3 命令提示符。
建议您以管理员身份运行该命令提示符,否则可能无法将环境克隆到某些目录。
使用
conda create或conda proclone克隆服务器的默认 Python 环境并命名新环境:注:
建议将其放置在 ArcGIS Server 安装目录的 Python 环境目录中。 或者,可以指定 ArcGIS Server 账户具有访问权限的其他位置。
- 使用以下命令通过
conda create克隆环境:
conda create --clone arcgispro-py3 --prefix <"cloned environment path"> --pinned --no-shortcuts在 12.1 及更高版本中,当 ArcGIS Server 不具有 Internet 访问权限时或如果您更倾向于本地复制现有环境以加快处理速度,请使用
conda proclone克隆环境。 您可以使用其他现有 Python 环境路径替换arcigspro-py3,作为待克隆的输入环境。`conda proclone <"cloned environment path"> --input-env arcgispro-py3`
- 使用以下命令通过
使用
activate <new environment name>在命令提示符窗口中激活新环境。 如果您使用的是 ArcGIS Server 安装目录的 Python 环境目录之外的目录,请使用activate <fullpath>\<new environment name>提供克隆环境的完整路径。使用
conda install packagename=version安装 Python 包。建议发布过程中在 ArcGIS Pro 中使用的包版本与服务器上安装的包版本保持一致。
所有包安装完成后,请转至 ArcGIS Server Administrator Directory,然后单击资源中的服务。
选择要为其指定 Python 环境的地理处理服务。
在受支持的操作中,单击页面底部的编辑。
在服务 JSON 中,当克隆环境位于 ArcGIS Server 安装目录的 Python 环境目录中时,请将键值对
"condaEnvironmentPath": <"new environment name">或"condaEnvironmentPath": "<full path to new environment>"添加到服务属性中。 如果您使用的是 ArcGIS Server 安装目录的 Python 环境目录之外的目录,则必须提供该克隆环境的完整路径。 以下示例是包含condaEnvironmentPath属性的简化服务属性 JSON:{ "serviceName": "gvonly", "type": "GPServer", "description": "", "allowedUploadFileTypes": "", "properties": { "toolbox": "C:\\arcgisserver\\directories\\arcgissystem\\arcgisinput\\gvonly.GPServer\\extracted\\p30\\gvonly.tbx", "condaEnvironmentPath": <"new environment name">, "showMessages": "INFO" }, "portalProperties": { "isHosted": false, "portalItems": [{ "itemID": "4921223df97744a593d0b776666b9da9", "type": "GPServer" }] }, "extensions": [{ "typeName": "WPSServer", "properties": { "serviceType": "", "name": "" } }], "frameworkProperties": {}, "datasets": [] }单击保存编辑内容按钮以保存编辑内容。
该服务将自动重新启动。
ArcGIS Server 升级后升级克隆 Python 环境
执行以下步骤,使用 conda proup 命令升级早期版本的 ArcGIS Server 的克隆 Python 环境:
登录到 ArcGIS Server 计算机,然后以管理员身份打开命令提示符窗口。
将目录更改为
<install>\ArcGIS\Server\framework\runtime\ArcGIS\bin\Python\Scripts。运行
conda proup -n <environment name>或conda proup -p <environment directory path>以升级环境。Python 环境升级后,请重新启动此 conda 环境使用的所有地理处理服务,或者重新启动 ArcGIS Server 服务。
有关 conda proup 命令的详细信息,请使用 conda proup --help。 ArcGIS Server 降级后,无法使用此功能降级环境。 此功能在断开连接的环境中也不可用。