We're just now getting the full functionality of Python in ArcMap via Python Add-Ins, but now everything is moving to ArcGIS Pro and I noticed that there are not any plans to include Python Add-Ins for Pro as well. I do like the new mapping module for Pro, but please also give us the ability to create Add-Ins with Python as well.
We appreciate the time that many of you have invested in explaining how you currently use Python add-ins in ArcMap, and why they are important to your organizations. Currently, there are no plans for Esri Development to work on Python add-ins for ArcGIS Pro.
Python is the primary language used to build custom geoprocessing tools and scripts to perform and automate spatial analysis, data management, and extensive data processing workflows across the ArcGIS platform. This is a long-term vision for Python and ArcGIS going back more than a decade, which will continue going forward.
The use of Python in ArcGIS has grown exponentially in recent years, through projects like the ArcGIS API for Python, ArcGIS Notebooks, Conda environment management, and developments and enhancements for ArcPy such as the new ArcGIS Pro modules arcpy.mp, arcpy.metadata, and arcpy.nax.
The primary drive for Python in ArcGIS for the foreseeable future will be the following:
- Advancing spatial data science through new modules and data objects
- Bringing a powerful Python Notebook experience to the ArcGIS platform
- Enabling scientific, machine learning, deep learning, and other third-party library integrations
- Continuing to support and enhance the automation of GIS tasks through the comprehensive ArcPy library
Python capabilities for application GUI customization, like ArcMap Python add-ins, have not been and will not be prioritized in the immediate future. The ArcGIS Pro add-in and SDK technology and developer story is considerably different than it was in ArcMap, redesigned for the new application built on new technology and paradigms. This means that developing Python add-ins for ArcGIS Pro would require a complete rewrite of the Python add-in framework. Python’s use as an add-in language would be very challenging in an asynchronous and multi-threaded application like ArcGIS Pro due to the Python Global Interpreter Lock (GIL), which prevents multiple threads from executing Python code at once.
On a related topic, custom ArcObjects and .NET-based geoprocessing tools (libraries with a custom GPFunction and GPFunctionFactory) are not supported in ArcGIS Pro. Developers who previously wrote tools with ArcObjects have had to transition to Python, which has added a significant demand on providing more capabilities in ArcPy. The goal is for ArcPy to provide a complete API for data management and data processing.
There are new capabilities you can take advantage of in the latest releases of ArcGIS Pro to accomplish several of the workflows you described as requiring or benefiting from Python add-ins, including:
- ArcGIS Pro SDK for Microsoft .NET allows you to develop add-ins and solution configurations to completely customize the ArcGIS Pro user experience. https://pro.arcgis.com/en/pro-app/sdk/
- Geoprocessing tools, including both system tools and your custom tools, can easily be placed as a button in any ribbon tab or group, including a custom ribbon, or in the quick access toolbar. This makes it possible to use the geoprocessing tool as a dialog to gather parameter values specified by a user and send those values to your Python execution code. https://pro.arcgis.com/en/pro-app/help/analysis/geoprocessing/basics/customize-arcgis-pro-with-geoprocessing-tools.htm
- You can customize ArcGIS Pro without writing a single line of code. This includes customizing the ribbon, windows, and other UI elements presented to new or novice users who need to efficiently complete work without needing access to all capabilities of the application. https://www.esri.com/arcgis-blog/products/data-management/data-management/arcgis-pro-tips-customize-without-a-line-of-code/
- Geoprocessing tools made with Python can have extensive validation rules, for example to populate a choicelist with custom options, present a series of checkboxes, or group parameters into an expandable section. Tools in ArcGIS Pro also can have a richer user experience with progressive disclosure by using the arcpy.Parameter.enabled=False property to make a parameter hidden on the tool dialog until the time when it is needed. https://pro.arcgis.com/en/pro-app/arcpy/geoprocessing_and_python/understanding-validation-in-script-tools.htm
- The arcpy.mp module provides access to the ArcGIS Pro CIM (Cartographic Information Model), giving you full control of the project, maps, and layers through Python code. This code can make changes to the current ArcGIS Pro project and active map, and can run through the Python window, a notebook within ArcGIS Pro, or as a geoprocessing script tool. https://pro.arcgis.com/en/pro-app/arcpy/mapping/python-cim-access.htm
- You can deploy Python capabilities through geoprocessing toolboxes as a Python module, to make complex solutions easily accessible to your users, and allow these geoprocessing tools to be available by default from the Geoprocessing pane without needing to manually add them. This module can be distributed through a Conda channel so when the library is added to a system’s Python environment the tools will be available by default. https://pro.arcgis.com/en/pro-app/arcpy/geoprocessing_and_python/extending-geoprocessing-through-python-modules.htm
- If novice or inexperienced users need to follow a directed series of steps to complete a task, ArcGIS Pro Tasks provides the ability to author steps through a wizard-like window to perform steps like selecting features, choosing options in a choicelist, running geoprocessing tools, and other easily configured actions and commands. https://pro.arcgis.com/en/pro-app/help/tasks/whatistask.htm
We understand that this message may be disappointing or frustrating, but we heard you when you asked for clearer communication about this functionality’s future in ArcGIS Pro. Though Python add-ins will not be coming to ArcGIS Pro, Esri continues to see Python as the language for data processing and spatial data science and analysis across the ArcGIS platform. We hope that sharing these details about the Esri Python development team’s priorities and direction helps you plan your work and adjust as necessary.