pythonpython-3.xpipenv

cert.get("subjectAltName", ()) is None


Hello am trying to install my packages from pipfile using "pipenv install --verbose"

And it is throwing this error

Traceback (most recent call last):
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/resolver.py", line 466, in <module>
    main()
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/resolver.py", line 452, in main
    _main(
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/resolver.py", line 436, in _main
    resolve_packages(
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/resolver.py", line 400, in resolve_packages
    results, resolver = resolve_deps(
                        ^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 968, in resolve_deps
    results, hashes, internal_resolver = actually_resolve_deps(
                                         ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 736, in actually_resolve_deps
    hashes = resolver.resolve_hashes
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 616, in resolve_hashes
    self.hashes = self.collect_hashes(ireq)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 587, in collect_hashes
    hashes = self.project.get_hashes_from_pypi(ireq, source)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/project.py", line 278, in get_hashes_from_pypi
    r = session.get(pkg_url, timeout=self.s.PIPENV_REQUESTS_TIMEOUT)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/requests/sessions.py", line 602, in get
    return self.request("GET", url, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/patched/pip/_internal/network/session.py", line 522, in request
    return super().request(method, url, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/cachecontrol/adapter.py", line 76, in send
    resp = super().send(request, stream, timeout, verify, cert, proxies)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/requests/adapters.py", line 667, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/urllib3/connectionpool.py", line 716, in urlopen
    httplib_response = self._make_request(
                       ^^^^^^^^^^^^^^^^^^^
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/urllib3/connectionpool.py", line 404, in _make_request
    self._validate_conn(conn)
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/urllib3/connectionpool.py", line 1061, in _validate_conn
    conn.connect()
  File "/Users/DUMMYNAME/.pyenv/versions/3.11.2/lib/python3.11/site-packages/pipenv/patched/pip/_vendor/urllib3/connection.py", line 462, in connect
    if not cert.get("subjectAltName", ()):
           ^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'get'

if am using the older python 3.9 it will work fine also I installed certifi using 3.11.2 and the certificate is fine


Solution

  • Working on MacOs using pyenv installed through Homebrew, what worked for me was to uninstall the pyenv, and then reinstall using:

    $ CONFIGURE_OPTS="--with-openssl=/opt/Homebrew/Cellar/openssl@3/3.4.1" pyenv install 3.10
    
    python-build: use openssl@1.1 from homebrew
    python-build: use readline from homebrew
    Installing Python-3.10.16...
    python-build: use tcl-tk from homebrew
    python-build: use readline from homebrew
    python-build: use zlib from xcode sdk
    Installed Python-3.10.16 to /Users/nmeli3/.pyenv/versions/3.10.16
    

    Although the output still states use openssl@1.1, it is now using openssl@3 instead. Reference: https://github.com/pyenv/pyenv/issues/2746.

    Afterwards upgrade pip worked just fine:

    python -m pip install --upgrade pip --upgrade setuptools