'Python package creation on Windows fails with „ … python.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.“

I’m working on Windows with ArcGIS Pro and Python and I have a copied conda env from ArcGIS Pro. If I try to build a package the following error is displayed:

ERROR Command '['C:\\Users\\...\\AppData\\Local\\Temp\\build-env-lljm30w\\Scripts\\python.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

It worked before with an older ArcGIS Pro Version and I think I found the problem:

The .whl file in Lib\ensurepip_bundled is pip-21.1.3-py3-none-any.whl and not pip-20.1.1-py2.py3-none-any.whl

It works if I manually copy the „old“ .whl file (from a coworker with the older ArcGIS Pro Version - still trying to get the version details) in the directory before I start the build process.

Since this can’t be the solution, I’m still looking for one. Anything I need to update? From what I understand the _bundled directory can’t be updated since it is already a part of the python version. But why does the (integrated) build version needs an older pip.whl?

Could someone please help me.

Python: 3.7.11 Arcgis Pro: 2.9.2 pip: 22.0.4 build: 0.7.0



Solution 1:[1]

I had a similar situation: Upgrade ArcGIS Pro which subsequently upgraded the underlying python from 3.6 to 3.7.11. This tanked my ability to build virtual python environments on top of my ArcPro python. I had the same error message as you.

Your question helped me narrow the problem to the ensurepip part of the equation. I followed the accepted answer on this page where a similar problem was recorded. So, I had to update the _PIP_VERSION variable to match my .whl file; in my case, this was 21.1.3 to match the file pip-21.1.3-py3-none-any.whl.

But, additionally, we also have the py2.py3 issue (which the OP of the other question did not). To fix this, I edited the last item of the last list in the _PROJECTS variable to become "py3") instead of "py2.py3").

After I made these two changes, I was able to install a venv to my ArcGIS-based python interpreter.

So, lines 12-19 of my __init__.py for ensurepip now look like this:

_SETUPTOOLS_VERSION = "47.1.0"

_PIP_VERSION = "21.1.3"  # "20.1.1"

_PROJECTS = [
    ("setuptools", _SETUPTOOLS_VERSION, "py3"),
    ("pip", _PIP_VERSION, "py3"),  # "py2.py3"),
]

Hope this helps!

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 cooperjaXC