Description of problem: I'm trying to install the latest version of mozregression, the mozilla tool for finding the change that created an error in firefox / nightly. Version-Release number of selected component (if applicable): python3-pip-22.2-1.fc37.noarch How reproducible: Every time Steps to Reproduce: 1. Have python3-pip installed in rawhide 2. Try to install a package 3. Actual results: $ pip3 install --user --root /home/stan/piproot mozregression ERROR: Exception: Traceback (most recent call last): File "/usr/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 167, in exc_logging_wrapper status = run_func(*args) ^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 247, in wrapper return func(self, options, args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/commands/install.py", line 315, in run session = self.get_default_session(options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 98, in get_default_session self._session = self.enter_context(self._build_session(options)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 125, in _build_session session = PipSession( ^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/network/session.py", line 343, in __init__ self.headers["User-Agent"] = user_agent() ^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/network/session.py", line 175, in user_agent setuptools_dist = get_default_environment().get_distribution("setuptools") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 180, in get_distribution return next(matches, None) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 175, in <genexpr> matches = ( ^ File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/base.py", line 604, in iter_all_distributions for dist in self._iter_distributions(): File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 167, in _iter_distributions yield from finder.find(location) File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 71, in find for dist, info_location in self._find_impl(location): File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 59, in _find_impl normalized_name = canonicalize_name(get_dist_name(dist)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_vendor/packaging/utils.py", line 34, in canonicalize_name value = _canonicalize_regex.sub("-", name).lower() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: expected string or bytes-like object, got 'NoneType' Traceback (most recent call last): File "/usr/bin/pip3", line 24, in <module> sys.exit(main()) ^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/cli/main.py", line 70, in main return command.main(cmd_args) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 101, in main return self._main(args) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 223, in _main self.handle_pip_version_check(options) File "/usr/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 179, in handle_pip_version_check session = self._build_session( ^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 125, in _build_session session = PipSession( ^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/network/session.py", line 343, in __init__ self.headers["User-Agent"] = user_agent() ^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/network/session.py", line 175, in user_agent setuptools_dist = get_default_environment().get_distribution("setuptools") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 180, in get_distribution return next(matches, None) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 175, in <genexpr> matches = ( ^ File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/base.py", line 604, in iter_all_distributions for dist in self._iter_distributions(): File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 167, in _iter_distributions yield from finder.find(location) File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 71, in find for dist, info_location in self._find_impl(location): File "/usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 59, in _find_impl normalized_name = canonicalize_name(get_dist_name(dist)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pip/_vendor/packaging/utils.py", line 34, in canonicalize_name value = _canonicalize_regex.sub("-", name).lower() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: expected string or bytes-like object, got 'NoneType' Expected results: python package installs in home directory Additional info: I also tried installing just pip with the same error.
I cannot reproduce this error. $ pip3 install --user --root /home/stan/piproot mozregression Collecting mozregression Downloading mozregression-4.0.18-py3-none-any.whl (69 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 69.6/69.6 kB 1.5 MB/s eta 0:00:00 Collecting glean-sdk>=31.1.3 Downloading glean_sdk-51.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 3.4 MB/s eta 0:00:00 Collecting beautifulsoup4>=4.7.1 Downloading beautifulsoup4-4.11.1-py3-none-any.whl (128 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 128.2/128.2 kB 2.6 MB/s eta 0:00:00 Collecting colorama>=0.4.1 Downloading colorama-0.4.5-py2.py3-none-any.whl (16 kB) Collecting configobj>=5.0.6 Downloading configobj-5.0.6.tar.gz (33 kB) Preparing metadata (setup.py) ... done Collecting mozdevice<5,>=4.0.0 Downloading mozdevice-4.0.3-py2.py3-none-any.whl (37 kB) Collecting mozfile>=2.0.0 Downloading mozfile-2.1.0.tar.gz (5.9 kB) Preparing metadata (setup.py) ... done Collecting mozinfo>=1.1.0 Downloading mozinfo-1.2.2.tar.gz (5.8 kB) Preparing metadata (setup.py) ... done Collecting mozinstall>=2.0.0 Downloading mozInstall-2.0.1-py2.py3-none-any.whl (6.1 kB) Collecting mozlog>=4.0 Downloading mozlog-7.1.0-py2.py3-none-any.whl (69 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 69.1/69.1 kB 1.9 MB/s eta 0:00:00 Collecting mozprocess>=1.2.0 Downloading mozprocess-1.3.0-py2.py3-none-any.whl (22 kB) Collecting mozprofile>=2.2.0 Downloading mozprofile-2.5.0-py2.py3-none-any.whl (23 kB) Collecting mozrunner>=8.0.2 Downloading mozrunner-8.2.1-py2.py3-none-any.whl (37 kB) Collecting mozversion>=2.1.0 Downloading mozversion-2.3.0-py2.py3-none-any.whl (5.2 kB) Collecting redo>=2.0.2 Downloading redo-2.0.4.tar.gz (10 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting requests>=2.21.0 Downloading requests-2.28.1-py3-none-any.whl (62 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.8/62.8 kB 1.7 MB/s eta 0:00:00 Collecting taskcluster>=6.0.0 Downloading taskcluster-44.17.2-py3-none-any.whl (140 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 140.5/140.5 kB 2.5 MB/s eta 0:00:00 Collecting soupsieve>1.2 Downloading soupsieve-2.3.2.post1-py3-none-any.whl (37 kB) Collecting six Downloading six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting glean-parser==6.1.1 Downloading glean_parser-6.1.1-py3-none-any.whl (92 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 92.9/92.9 kB 2.4 MB/s eta 0:00:00 Collecting appdirs>=1.4 Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB) Collecting Click>=7 Downloading click-8.1.3-py3-none-any.whl (96 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.6/96.6 kB 2.4 MB/s eta 0:00:00 Collecting diskcache>=4 Downloading diskcache-5.4.0-py3-none-any.whl (44 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.0/45.0 kB 2.5 MB/s eta 0:00:00 Collecting Jinja2>=2.10.1 Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 kB 3.2 MB/s eta 0:00:00 Collecting MarkupSafe<=2.0.1,>=1.1.1 Downloading MarkupSafe-2.0.1.tar.gz (18 kB) Preparing metadata (setup.py) ... done Collecting jsonschema>=3.0.2 Downloading jsonschema-4.9.1-py3-none-any.whl (79 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.5/79.5 kB 2.3 MB/s eta 0:00:00 Collecting PyYAML>=5.3.1 Downloading PyYAML-6.0.tar.gz (124 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 125.0/125.0 kB 3.2 MB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting yamllint>=1.18.0 Downloading yamllint-1.27.1.tar.gz (129 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 129.1/129.1 kB 3.2 MB/s eta 0:00:00 Preparing metadata (setup.py) ... done Collecting distro>=1.4.0 Downloading distro-1.7.0-py3-none-any.whl (20 kB) Collecting blessings>=1.3 Downloading blessings-1.7-py3-none-any.whl (18 kB) Collecting mozterm Downloading mozterm-1.0.0-py2.py3-none-any.whl (3.4 kB) Collecting charset-normalizer<3,>=2 Downloading charset_normalizer-2.1.0-py3-none-any.whl (39 kB) Collecting idna<4,>=2.5 Downloading idna-3.3-py3-none-any.whl (61 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.2/61.2 kB 3.4 MB/s eta 0:00:00 Collecting urllib3<1.27,>=1.21.1 Downloading urllib3-1.26.11-py2.py3-none-any.whl (139 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 139.9/139.9 kB 3.8 MB/s eta 0:00:00 Collecting certifi>=2017.4.17 Downloading certifi-2022.6.15-py3-none-any.whl (160 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 160.2/160.2 kB 3.2 MB/s eta 0:00:00 Collecting mohawk>=0.3.4 Downloading mohawk-1.1.0-py3-none-any.whl (22 kB) Collecting slugid>=2 Downloading slugid-2.0.0-py2.py3-none-any.whl (8.2 kB) Collecting taskcluster-urls>=12.1.0 Downloading taskcluster_urls-13.0.1-py3-none-any.whl (10 kB) Collecting aiohttp>=3.7.4 Downloading aiohttp-3.8.1.tar.gz (7.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.3/7.3 MB 4.1 MB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Installing backend dependencies ... done Preparing metadata (pyproject.toml) ... done Collecting async-timeout>=2.0.0 Downloading async_timeout-4.0.2-py3-none-any.whl (5.8 kB) Collecting attrs>=17.3.0 Downloading attrs-22.1.0-py2.py3-none-any.whl (58 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.8/58.8 kB 3.3 MB/s eta 0:00:00 Collecting multidict<7.0,>=4.5 Downloading multidict-6.0.2.tar.gz (50 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 50.3/50.3 kB 1.7 MB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting yarl<2.0,>=1.0 Downloading yarl-1.8.1.tar.gz (172 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 172.3/172.3 kB 2.0 MB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting frozenlist>=1.1.1 Downloading frozenlist-1.3.1.tar.gz (66 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.4/66.4 kB 3.0 MB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting aiosignal>=1.1.2 Downloading aiosignal-1.2.0-py3-none-any.whl (8.2 kB) Collecting pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 Downloading pyrsistent-0.18.1.tar.gz (100 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100.5/100.5 kB 2.6 MB/s eta 0:00:00 Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting pathspec>=0.5.3 Downloading pathspec-0.9.0-py2.py3-none-any.whl (31 kB) Requirement already satisfied: setuptools in /usr/lib/python3.11/site-packages (from yamllint>=1.18.0->glean-parser==6.1.1->glean-sdk>=31.1.3->mozregression) (62.6.0) Using legacy 'setup.py install' for configobj, since package 'wheel' is not installed. Using legacy 'setup.py install' for mozfile, since package 'wheel' is not installed. Using legacy 'setup.py install' for mozinfo, since package 'wheel' is not installed. Using legacy 'setup.py install' for MarkupSafe, since package 'wheel' is not installed. Using legacy 'setup.py install' for yamllint, since package 'wheel' is not installed. Building wheels for collected packages: redo, aiohttp, frozenlist, multidict, PyYAML, yarl, pyrsistent Building wheel for redo (pyproject.toml) ... done Created wheel for redo: filename=redo-2.0.4-py2.py3-none-any.whl size=11924 sha256=a28c41b6b4ee8288d199c35d467bbcbe1c17c960d2a8c2778422b2a47634a679 Stored in directory: /builddir/.cache/pip/wheels/77/47/ae/049e0ede6b40ab84cb26974f4067605d708a393a6c9f965373 Building wheel for aiohttp (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for aiohttp (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [107 lines of output] ********************* * Accelerated build * ********************* running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-cpython-311 creating build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/__init__.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/abc.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/base_protocol.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/client.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/client_exceptions.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/client_proto.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/client_reqrep.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/client_ws.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/connector.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/cookiejar.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/formdata.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/hdrs.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/helpers.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/http.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/http_exceptions.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/http_parser.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/http_websocket.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/http_writer.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/locks.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/log.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/multipart.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/payload.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/payload_streamer.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/pytest_plugin.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/resolver.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/streams.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/tcp_helpers.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/test_utils.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/tracing.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/typedefs.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_app.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_exceptions.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_fileresponse.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_log.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_middlewares.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_protocol.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_request.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_response.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_routedef.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_runner.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_server.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_urldispatcher.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/web_ws.py -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/worker.py -> build/lib.linux-x86_64-cpython-311/aiohttp running egg_info writing aiohttp.egg-info/PKG-INFO writing dependency_links to aiohttp.egg-info/dependency_links.txt writing requirements to aiohttp.egg-info/requires.txt writing top-level names to aiohttp.egg-info/top_level.txt reading manifest file 'aiohttp.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching 'aiohttp' anywhere in distribution warning: no previously-included files matching '*.pyc' found anywhere in distribution warning: no previously-included files matching '*.pyd' found anywhere in distribution warning: no previously-included files matching '*.so' found anywhere in distribution warning: no previously-included files matching '*.lib' found anywhere in distribution warning: no previously-included files matching '*.dll' found anywhere in distribution warning: no previously-included files matching '*.a' found anywhere in distribution warning: no previously-included files matching '*.obj' found anywhere in distribution warning: no previously-included files found matching 'aiohttp/*.html' no previously-included directories found matching 'docs/_build' adding license file 'LICENSE.txt' writing manifest file 'aiohttp.egg-info/SOURCES.txt' copying aiohttp/_cparser.pxd -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_find_header.c -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_find_header.h -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_find_header.pxd -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_headers.pxi -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_helpers.c -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_helpers.pyi -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_helpers.pyx -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_http_parser.c -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_http_parser.pyx -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_http_writer.c -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_http_writer.pyx -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_websocket.c -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/_websocket.pyx -> build/lib.linux-x86_64-cpython-311/aiohttp copying aiohttp/py.typed -> build/lib.linux-x86_64-cpython-311/aiohttp creating build/lib.linux-x86_64-cpython-311/aiohttp/.hash copying aiohttp/.hash/_cparser.pxd.hash -> build/lib.linux-x86_64-cpython-311/aiohttp/.hash copying aiohttp/.hash/_find_header.pxd.hash -> build/lib.linux-x86_64-cpython-311/aiohttp/.hash copying aiohttp/.hash/_helpers.pyi.hash -> build/lib.linux-x86_64-cpython-311/aiohttp/.hash copying aiohttp/.hash/_helpers.pyx.hash -> build/lib.linux-x86_64-cpython-311/aiohttp/.hash copying aiohttp/.hash/_http_parser.pyx.hash -> build/lib.linux-x86_64-cpython-311/aiohttp/.hash copying aiohttp/.hash/_http_writer.pyx.hash -> build/lib.linux-x86_64-cpython-311/aiohttp/.hash copying aiohttp/.hash/_websocket.pyx.hash -> build/lib.linux-x86_64-cpython-311/aiohttp/.hash copying aiohttp/.hash/hdrs.py.hash -> build/lib.linux-x86_64-cpython-311/aiohttp/.hash running build_ext building 'aiohttp._websocket' extension creating build/temp.linux-x86_64-cpython-311 creating build/temp.linux-x86_64-cpython-311/aiohttp gcc -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python3.11 -c aiohttp/_websocket.c -o build/temp.linux-x86_64-cpython-311/aiohttp/_websocket.o aiohttp/_websocket.c:198:12: fatal error: longintrepr.h: No such file or directory 198 | #include "longintrepr.h" | ^~~~~~~~~~~~~~~ compilation terminated. error: command '/usr/bin/gcc' failed with exit code 1 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for aiohttp Building wheel for frozenlist (pyproject.toml) ... done Created wheel for frozenlist: filename=frozenlist-1.3.1-cp311-cp311-linux_x86_64.whl size=146441 sha256=ae4358f2c46a1fe36d6e31de9bd350833d4a11810f741bde4b9283f9fb7ab213 Stored in directory: /builddir/.cache/pip/wheels/eb/68/05/c66877454e384f0380597b4dd6c673a3fb912aa5f8f5896a6c Building wheel for multidict (pyproject.toml) ... done Created wheel for multidict: filename=multidict-6.0.2-cp311-cp311-linux_x86_64.whl size=121251 sha256=8e0553193b7ea7f80c76dbf1b191baf1ef0f13b5e41a604d93a01765c8819e9e Stored in directory: /builddir/.cache/pip/wheels/7b/ec/ad/cc2e36f0511204c0f10234b843217fcf9cfe91d8da632e6e80 Building wheel for PyYAML (pyproject.toml) ... done Created wheel for PyYAML: filename=PyYAML-6.0-cp311-cp311-linux_x86_64.whl size=45330 sha256=87153f3d597150c8458cd2d8c188a452e0f2d2a0cc31a4f987007e967cf62412 Stored in directory: /builddir/.cache/pip/wheels/3c/de/35/2cbb99955fa449eeddb2b433b4369035ee5bdf0fc121035ffe Building wheel for yarl (pyproject.toml) ... done Created wheel for yarl: filename=yarl-1.8.1-cp311-cp311-linux_x86_64.whl size=221616 sha256=c255580bd96f8330761e8a772e3b9702fb6128abd817444f6920bbcc8d738f70 Stored in directory: /builddir/.cache/pip/wheels/89/bd/5e/d3d43d51723273054a5c96387e6fe49978911cd08f8326adf1 Building wheel for pyrsistent (pyproject.toml) ... done Created wheel for pyrsistent: filename=pyrsistent-0.18.1-cp311-cp311-linux_x86_64.whl size=108107 sha256=5531a0fc0521a229563b42ab0c8d97f36b69fd5fee79a91f1f9d5a47c33f38f0 Stored in directory: /builddir/.cache/pip/wheels/8c/e4/47/14060cdf4ed767bf542f57310493b608973aed234559e41860 Successfully built redo frozenlist multidict PyYAML yarl pyrsistent Failed to build aiohttp ERROR: Could not build wheels for aiohttp, which is required to install pyproject.toml-based projects
Thanks for testing. Yes, that is the behavior I expected. I used to use the 2.7 version, but that no longer works, so I wanted to install the python3 version. I just had a slug of updates (1.5 GB) occur today, and was hoping that would resolve the issue. It didn't. I also tried installing with a different user, and same result. I'm having boot issues since early July, so I suspect there is something that is not right with this installation of rawhide. But I have had almost 20 GB of updates in the last few weeks, I would think that would bring in problematic dependencies. I use a non-standard DNS configuration via knot resolver (not using resolved, NetworkManager not managing DNS), but dnf and firefox seem to have no issue with it. Is there some network configuration default built in to python-pip that would choke on this difference? Can you offer any suggestion about where the problem here might be from the error messages? Should I reinstall python3.11?
I reinstalled all the python3.11 packages by using dnf reinstall python3.11\* and there were about a thousand packages, but it didn't fix the problem.
Could you move away (backup) your ~/.local/lib/python3.11/ and see if it helps?
I don't have that file: $ ls .local/* .local/share: akonadi applications data gsettings-data-convert kalarm konsole meld okular recently-used.xbel vlc akonadi_kalarm_resource_1 autojump evolution gvfs-metadata keyrings kxmlgui5 mime parcellite Trash xorg akonadi_migration_agent contacts flatpak kactivitymanagerd khelpcenter mc nautilus RecentDocuments virtualenv zeitgeist .local/state: wireplumber
Good. Do you have /usr/local/lib/python3.11/ or /usr/local/lib64/python3.11/ ?
No. $ ls /usr/local/lib firefox $ ls /usr/local/lib64
*** Bug 2115847 has been marked as a duplicate of this bug. ***
Looking at the reproducers from bz2115847. Still cannot reproduce: $ rpm -qa | grep python python-srpm-macros-3.11-4.fc37.noarch python-setuptools-wheel-62.6.0-2.fc37.noarch python-pip-wheel-22.2-1.fc37.noarch python3-3.11.0~b5-1.fc37.x86_64 python3-libs-3.11.0~b5-1.fc37.x86_64 python3-setuptools-62.6.0-2.fc37.noarch python3-pip-22.2-1.fc37.noarch $ python3 -m pip list Package Version ---------- ------- pip 22.2 setuptools 62.6.0
Could either of you attach a full output of rpm -qa?
I think I got a reproducer: # mkdir /usr/lib/python3.11/site-packages/bad.dist-info # python3 -m pip list ... TypeError: expected string or bytes-like object, got 'NoneType' Looks Fedora-specific, but I won't have time to dive deeper this week.
Awesome. Maybe some package we ship has bad metadata? Anyway: $ podman run --rm -ti python:3.11.0b5 /bin/bash root@aca617e91362:/# python3 -m pip list Package Version ---------- ------- pip 22.2 setuptools 63.2.0 wheel 0.37.1 root@aca617e91362:/# mkdir /usr/local/lib/python3.11/site-packages/bad.dist-info root@aca617e91362:/# python3 -m pip list ERROR: Exception: Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 167, in exc_logging_wrapper status = run_func(*args) ^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/commands/list.py", line 164, in run packages: "_ProcessedDists" = [ ^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/commands/list.py", line 164, in <listcomp> packages: "_ProcessedDists" = [ ^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/base.py", line 646, in <genexpr> return (d for d in it if d.canonical_name not in skip) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/base.py", line 594, in iter_all_distributions for dist in self._iter_distributions(): File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 167, in _iter_distributions yield from finder.find(location) File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 71, in find for dist, info_location in self._find_impl(location): File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 59, in _find_impl normalized_name = canonicalize_name(get_dist_name(dist)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_vendor/packaging/utils.py", line 34, in canonicalize_name value = _canonicalize_regex.sub("-", name).lower() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: expected string or bytes-like object, got 'NoneType' Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/local/lib/python3.11/site-packages/pip/__main__.py", line 31, in <module> sys.exit(_main()) ^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/cli/main.py", line 70, in main return command.main(cmd_args) ^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 101, in main return self._main(args) ^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/cli/base_command.py", line 223, in _main self.handle_pip_version_check(options) File "/usr/local/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 179, in handle_pip_version_check session = self._build_session( ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/cli/req_command.py", line 125, in _build_session session = PipSession( ^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/network/session.py", line 343, in __init__ self.headers["User-Agent"] = user_agent() ^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/network/session.py", line 175, in user_agent setuptools_dist = get_default_environment().get_distribution("setuptools") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 180, in get_distribution return next(matches, None) ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 175, in <genexpr> matches = ( ^ File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/base.py", line 594, in iter_all_distributions for dist in self._iter_distributions(): File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 167, in _iter_distributions yield from finder.find(location) File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 71, in find for dist, info_location in self._find_impl(location): File "/usr/local/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py", line 59, in _find_impl normalized_name = canonicalize_name(get_dist_name(dist)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/pip/_vendor/packaging/utils.py", line 34, in canonicalize_name value = _canonicalize_regex.sub("-", name).lower() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: expected string or bytes-like object, got 'NoneType' Also happens with pip-22.2.2. But doe snot happen with pip-21.3.1. Will consult upstream. But we also need to figure out what Fedora package causes this for the reporter(s).
Reported to pip upstream: https://github.com/pypa/pip/issues/11352 A workaround in pip code could be easy, but I'd still like to know what Fedora package is causing this (if any).
Created attachment 1903982 [details] rpm -qa | sort
I tweaked the function to print the current package and the culprit for me seems this orphaned empty mercurial path: <importlib.metadata.PathDistribution object at 0x7fbbb25e9650> None PosixPath('/usr/lib64/python3.11/site-packages/mercurial-6.2-py3.11.egg-info') The path is empty and not owned: $ rpm -qf /usr/lib64/python3.11/site-packages/mercurial-6.2-py3.11.egg-info file /usr/lib64/python3.11/site-packages/mercurial-6.2-py3.11.egg-info is not owned by any package
After removing the empty directory found above, another mercurial related empty orphaned directory is bugging pip: <importlib.metadata.PathDistribution object at 0x7f2ea7e17150> None PosixPath('/usr/lib64/python3.11/site-packages/mercurial-6.1.3-py3.11.egg-info') After removing this one, pip is able to proceed !
Thanks. Clearly, mercurial owns the files but not the dir and the dir remains empty upon removal or upgrading. $ repoquery --repo=rawhide -l mercurial | grep egg-info /usr/lib64/python3.11/site-packages/mercurial-6.2.1-py3.11.egg-info/PKG-INFO /usr/lib64/python3.11/site-packages/mercurial-6.2.1-py3.11.egg-info/SOURCES.txt /usr/lib64/python3.11/site-packages/mercurial-6.2.1-py3.11.egg-info/dependency_links.txt /usr/lib64/python3.11/site-packages/mercurial-6.2.1-py3.11.egg-info/top_level.txt The mercurial package does apparently use the RECORD file to create the %file list, hence not owning the directory. Will report that.
Given Yann's success noted above, I checked in /usr/lib/python3.11/site-packages for empty dist-info and empty egg-info. There were no empty dist-info, but there are many empty egg-info. I checked a couple and they seem to be owned by current packages. I'll be attaching both of those files. And I'll check all the empty egg-info directories to see if they are owned by a current package.
Created attachment 1903985 [details] The dist-info directory for all packages in /usr/lib/python3.11/site-packages This is the dist-info, there don't seem to be any packages with empty dist-info.
Created attachment 1903987 [details] The egg-info directory for all packages in /usr/lib/python3.11/site-packages This is the egg info for all packages, and there are many empty directories for the installed packages.
Beware that egg-info might be a file.
The single line egg-info were probably a file, and they all checked out as belonging to a package. I guess that leaves Yann's technique, which seems to be putting some print statements in pip. Yann, can you describe what you did, and where you did it, so I can repeat your method of finding the problem? Thanks.
(In reply to stan from comment #22) > The single line egg-info were probably a file, and they all checked out as > belonging to a package. I guess that leaves Yann's technique, which seems > to be putting some print statements in pip. Yann, can you describe what you > did, and where you did it, so I can repeat your method of finding the > problem? Thanks. I applied the following change, it will list the paths as they are processed. The last path print, before the traceback, would be the problematic one --- /usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py~ 2022-07-27 23:00:42.000000000 +0200 +++ /usr/lib/python3.11/site-packages/pip/_internal/metadata/importlib/_envs.py 2022-08-05 18:47:31.562536953 +0200 @@ -17,6 +17,8 @@ from ._compat import BasePath, get_dist_name, get_info_location from ._dists import Distribution +import pprint + def _looks_like_wheel(location: str) -> bool: if not location.endswith(WHEEL_EXTENSION): @@ -56,6 +58,8 @@ # To know exactly where we find a distribution, we have to feed in the # paths one by one, instead of dumping the list to importlib.metadata. for dist in importlib.metadata.distributions(path=[location]): + pprint.pprint(get_dist_name(dist)) + pprint.pprint(get_info_location(dist)) normalized_name = canonicalize_name(get_dist_name(dist)) if normalized_name in self._found_names: continue
Thank you, Yann! That worked. And found the same problem as you did, /usr/lib64/python3.11/site-packages/mercurial-6.2-py3.11.egg-info. Only the one, no second one. I was checking in /usr/lib, and pip was looking in /usr/lib64. The mercurial package doesn't exist in /usr/lib, it only exists in /usr/lib64, so I didn't find mercurial at all. The path was there in your message, but my eyes just skipped right over it to the name at the end. I thought that python only installed in /usr/lib, and yet pip was looking in /usr/lib64, and finding what it was looking for! Later it only looks in /usr/lib. Do I misunderstand, python packages can be installed in either /usr/lib or /usr/lib64?
Pure Python packages are in /usr/lib, packages with extension modules (binary .so files) are in /usr/lib64.
Thanks for the clarification. And for your help. This issue is resolved for me, so should I close the ticket?
No, please. I will try to make pip more resilient to this.
This bug appears to have been reported against 'rawhide' during the Fedora Linux 37 development cycle. Changing version to 37.
PR's: https://src.fedoraproject.org/rpms/python-pip/pull-request/109 https://src.fedoraproject.org/rpms/python-pip/pull-request/110
FEDORA-2022-9d69377abe has been submitted as an update to Fedora 38. https://bodhi.fedoraproject.org/updates/FEDORA-2022-9d69377abe
FEDORA-2022-ac932952fc has been submitted as an update to Fedora 37. https://bodhi.fedoraproject.org/updates/FEDORA-2022-ac932952fc
FEDORA-2022-9d69377abe has been pushed to the Fedora 38 stable repository. If problem still persists, please make note of it in this bug report.
FEDORA-2022-ac932952fc has been pushed to the Fedora 37 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2022-ac932952fc` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2022-ac932952fc See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
FEDORA-2022-ac932952fc has been pushed to the Fedora 37 stable repository. If problem still persists, please make note of it in this bug report.
FEDORA-2023-446b0b621c has been submitted as an update to Fedora 39. https://bodhi.fedoraproject.org/updates/FEDORA-2023-446b0b621c