Распространение модулей геообработки
Распространяйте и устанавливайте пользовательские модули геообработки, следуя стандартным шаблонам размещения пакетов Python.
В этом разделе рассматривается пример модуля foo из раздела Создание модулей геообработки.
Распространие модуля геообработки в виде сжатого архива
Чтобы разместить модуль геообработки в виде сжатого архива, заархивируйте модуль (например, пакет foo) в формат .zip или в другой предпочитаемый формат сжатия. Затем предложите вашей аудитории выполнить следующие действия:
Клонируйте среду ArcGIS Pro conda по умолчанию.
Примечание:
Изменение стандартной среды Python (
arcgispro-py3) в ArcGIS Pro не рекомендуется и может привести к непредвиденным последствиям. Рекомендуется изменять только клонированную среду.Распакуйте пакет
fooв папку пакетов клона (%LocalAppData%\ESRI\conda\envs\<clone_environment_name>\Lib\site-packages).Переключите текущую среду ArcGIS Pro conda в клонированную среду с помощью диспетчера пакетов Python.
Распространие модуля геообработки с помощью pip
Модули геообработки можно распространять посредством pip с Wheel-файлом, используя библиотеку setuptools.
Примечание:
Для размещения модуля с помощью pip требуются пакеты conda, pip, setuptools и wheel в среде Python. Эти пакеты входят в стандартную среду ArcGIS Pro Python.
Создание wheel-файла для распространения
Для пакета foo, чтобы его можно было установить в каталоге Python site-packages, требуется пакет распространения (дистрибутив). С помощью пакета распространения этот пакет можно опубликовать, чтобы его могли использовать другие пользователи.
Для создания wheel-файла выполните следующие шаги:
- Создайте скрипт
setup.py, похожий на следующий:
setup.py
Пример кода для создания скрипта setup.py.
import os
from setuptools import setup
def read(fname):
return open(os.path.join(os.path.dirname(__file__), fname)).read()
setup(name='foo',
version='1.0',
author='Esri',
description=("Example for extending geoprocessing through Python modules"),
long_description=read('Readme.txt'),
python_requires='~=3.3',
packages=['foo'],
package_data={'foo':['esri/toolboxes/*',
'esri/arcpy/*', 'esri/help/gp/*',
'esri/help/gp/toolboxes/*', 'esri/help/gp/messages/*']
},
)
- При распространении модуля геообработки, поддерживающего дополнительные языки, параметр функции
setup(параметрpackage_data) должен включать дополнительные языковые каталоги. Например, в случае с локализацией для испанского языкаsetup.pyдолжен быть следующим:
setup.py с локализацией для испанского языка
Пример кода для setup.py для включения каталогов локализации для испанского языка.
import os
from setuptools import setup
def read(fname):
return open(os.path.join(os.path.dirname(__file__), fname)).read()
setup(name='foo',
version='1.0',
author='Esri',
description=("Example for extending geoprocessing through Python modules"),
long_description=read('Readme.txt'),
python_requires='~=3.3',
packages=['foo'],
package_data={'foo':['esri/toolboxes/*',
'esri/arcpy/*', 'esri/help/gp/*',
'esri/help/gp/toolboxes/*', 'esri/help/gp/messages/*',
'esri/help/es/gp/*', 'esri/help/es/gp/toolboxes/*',
'esri/help/es/gp/messages/*']
},
)
Скрипт сборки setup.py задает несколько свойств и направляет служебную программу сборки в каталог пакета. Длинное описание хранится в сопроводительном файле Readme.txt. Файлы setup.py и Readme.txt должны находиться в каталоге src. Дополнительные сведения об использовании setup() см. в разделе Упаковка и распространение проектов. Ниже представлена структура каталогов для пакета foo (в случае, если поддерживается только английский язык, дополнительная папка es испанского языка исключается):
Src
├ setup.py
├ Readme.txt
└──foo
├ __init__.py
├ bar.py
└──esri
├──arcpy
│ └ SamplePythonToolbox.py
├──help
│ ├──es
│ │ └──gp
│ │ ├ SamplePythonToolbox_toolbox.xml
│ │ ├ SampleTool_SamplePythonToolbox.xml
│ │ ├──messages
│ │ │ └ messages.xml
│ │ └──toolboxes
│ │ └ SamplePythonToolbox.xml
│ └──gp
│ ├ SamplePythonToolbox_toolbox.xml
│ ├ SampleTool_SamplePythonToolbox.xml
│ ├──messages
│ │ └ messages.xml
│ └──toolboxes
│ └ SamplePythonToolbox.xml
└──toolboxes
├ SamplePythonToolbox.pyt
├ SamplePythonToolbox.pyt.xml
└ SamplePythonToolbox.SampleTool.pyt.xml
Чтобы создать установщик для пакета
foo, выполните следующую команду из каталогаsrc, используя командную строку:python setup.py sdist bdist_wheelКоманда
sdist bdist_wheelсоздает папкиdist,buildиfoo.egg-infoв каталоге предыдущего уровняsrc. В папкеdistсоздается wheel-файл с именемfoo-1.0-py3-none-any.whl. Wheel-файл может быть размещен непосредственно с помощью pip.
Установка из wheel-файла с помощью pip
После клонирования и переключения среды откройте Командную строку Python, чтобы установить wheel-файл непосредственно с помощью pip. Pip установит wheel-файл в активную среду.
Запустите следующую команду в командной строке Python из директории
src\dist:pip install foo-1.0-py3-none-any.whlКогда будет установлен пакет
foo, в директорииsite-packagesбудет создана следующая структура каталогов (в случае, если поддерживается только английский язык, дополнительная папкаesиспанского языка исключается):site-packages └──foo ├ __init__.py ├ bar.py └──esri ├──arcpy │ └ SamplePythonToolbox.py ├──help │ ├──es │ │ └──gp │ │ ├ SamplePythonToolbox_toolbox.xml │ │ ├ SampleTool_SamplePythonToolbox.xml │ │ ├──messages │ │ │ └ messages.xml │ │ └──toolboxes │ │ └ SamplePythonToolbox.xml │ └──gp │ ├ SamplePythonToolbox_toolbox.xml │ ├ SampleTool_SamplePythonToolbox.xml │ ├──messages │ └──toolboxes │ └ SamplePythonToolbox.xml └──toolboxes ├ SamplePythonToolbox.pyt ├ SamplePythonToolbox.pyt.xml └ SamplePythonToolbox.SampleTool.pyt.xmlПримечание:
Папка
messagesприсутствует только в том случае, если в пакете содержатся файлы сообщений.Если на вашем компьютере установлены ограничения, запрещающие выполнение установки, копирование каталога
fooиз каталогаbuild\libв папку%LocalAppData%\ESRI\conda\envs\<environment_name>\Lib\site-packagesприведет к тому же эффекту, что и установка из архивного файла. При копировании пакета вручную он не будет распознаваться или управлятьсяpip.
Использование модуля геообработки
В ArcGIS Pro инструмент SamplePythonToolbox будет доступен на панели Геообработка, а также доступен для поиска. Панель инструментов и инструмент также можно вызвать из arcpy следующим образом: arcpy.SamplePythonToolbox.SampleTool()
Используя ArcGIS Pro и процесс разработки пакета Python, вы можете создать и разместить пакет, расширяющий возможности геообработки за счет пользовательских наборов инструментов, которые можно будет просматривать и использовать в наборах инструментов системы ArcGIS и arcpy, с модулем геообработки, поддерживающим несколько разных языков.