skip to Main Content

I am trying to install a package with pip in a fresh virtual environment on Ubuntu 20.04.5, but I keep getting the following warning, when I run pip a second time. The installation of the package fails after the first attempt.

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: There was an error checking the latest version of pip.

The first attempt in a fresh environment works

./venv/bin/pip install --upgrade pip
Collecting pip
  Using cached pip-22.2.2-py3-none-any.whl (2.0 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.0.2
    Uninstalling pip-20.0.2:
      Successfully uninstalled pip-20.0.2
Successfully installed pip-22.2.2

but the same command fails afterwards and I see the warning messages.

./venv/bin/pip install --upgrade pip
Requirement already satisfied: pip in ./venv/lib/python3.8/site-packages (22.2.2)
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: There was an error checking the latest version of pip.

I cannot install other packages either

./venv/bin/pip install --upgrade numpy
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/numpy/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/numpy/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/numpy/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/numpy/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/numpy/
ERROR: Could not find a version that satisfies the requirement numpy (from versions: none)
ERROR: No matching distribution found for numpy
WARNING: There was an error checking the latest version of pip.

Steps to reproduce

Create a new environment:

python3 -m venv venv
source ./venv/bin/activate

Check the versions I use for Python

./venv/bin/python --version
Python 3.8.10

and pip

❯ ./venv/bin/pip --version
pip 20.0.2 from /home/$USER/projects/venv/lib/python3.8/site-packages/pip (python 3.8)

I am not using a proxy and my firewall is disabled.

❯ echo "$http_proxy"

❯ echo "$https_proxy"

❯ sudo ufw status
Status: inactive

I can run the same steps without problems within a Docker container on the same machine.
My openssl.conf is not changed.
It seems to be related to my local Python setup.
My pip config list is empty.
There are no config files

pip config list -v
For variant 'global', will try loading '/etc/xdg/pip/pip.conf'
For variant 'global', will try loading '/etc/pip.conf'
For variant 'user', will try loading '/home/$USER/.pip/pip.conf'
For variant 'user', will try loading '/home/$USER/.config/pip/pip.conf'
For variant 'site', will try loading '/home/$USER/git/infrastructure-manual-tasks/cropster-csar/resize-login-images/venv/pip.conf'

I use Google DNS

Link 12 (ens4)
      Current Scopes: DNS    
DefaultRoute setting: yes    
       LLMNR setting: yes    
MulticastDNS setting: no     
  DNSOverTLS setting: no     
      DNSSEC setting: no     
    DNSSEC supported: no     
  Current DNS Server: 8.8.8.8
         DNS Servers: 8.8.8.8
                      8.8.4.4
                      1.1.1.1
          DNS Domain: ~.     

I noticed that I can install packages when I force pip to use a different mirror which does not enforce HTTPS. So the problem seems to be related to SSL, but I cannot find the source of it.

This works

./venv/bin/pip install --upgrade -i http://pypi.douban.com/simple --trusted-host pypi.douban.com numpy
Looking in indexes: http://pypi.douban.com/simple
Collecting numpy
  Downloading http://pypi.doubanio.com/packages/d6/e2/bed33bdbf513cd6d3fcb4377792ef1b8aad941da542a191e1e2a98c6621f/numpy-1.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17.1/17.1 MB 6.4 MB/s eta 0:00:00
Installing collected packages: numpy
Successfully installed numpy-1.23.3

but this does not when using HTTPS.

./venv/bin/pip install --upgrade -i https://pypi.douban.com/simple --trusted-host pypi.douban.com pandas
Looking in indexes: https://pypi.douban.com/simple
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pandas/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pandas/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pandas/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pandas/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pandas/
ERROR: Could not find a version that satisfies the requirement pandas (from versions: none)
ERROR: No matching distribution found for pandas

I have no clue where else to look.

Updates

Testing with curl

Accessing the repository with curl seems fine.

❯ curl -v -I https://pypi.douban.com/simple
*   Trying 140.143.177.206:443...
* TCP_NODELAY set
* Connected to pypi.douban.com (140.143.177.206) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: C=CN; ST=Beijing; O=Beijing Douwang Technology Co. Ltd.; CN=*.douban.com
*  start date: Jun 22 00:00:00 2022 GMT
*  expire date: Jul 23 23:59:59 2023 GMT
*  subjectAltName: host "pypi.douban.com" matched cert's "*.douban.com"
*  issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=GeoTrust RSA CA 2018
*  SSL certificate verify ok.
> HEAD /simple HTTP/1.1
> Host: pypi.douban.com
> User-Agent: curl/7.68.0
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
HTTP/1.1 301 Moved Permanently
< Date: Thu, 15 Sep 2022 06:38:26 GMT
Date: Thu, 15 Sep 2022 06:38:26 GMT
< Content-Type: text/html
Content-Type: text/html
< Content-Length: 162
Content-Length: 162
< Connection: keep-alive
Connection: keep-alive
< Keep-Alive: timeout=30
Keep-Alive: timeout=30
< Location: https://pypi.doubanio.com/simple
Location: https://pypi.doubanio.com/simple
< Server: dae
Server: dae

< 
* Connection #0 to host pypi.douban.com left intact

OpenSSL version

❯ openssl version -a
OpenSSL 1.1.1f  31 Mar 2020
built on: Mon Jul  4 11:24:28 2022 UTC
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(int) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-51ig8V/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
OPENSSLDIR: "/usr/lib/ssl"
ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1"
Seeding source: os-specific

Not updating pip

It works with the old version of pip 20.0.2

❯ ./venv/bin/pip install Pillow
Collecting Pillow
  Using cached Pillow-9.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)
Installing collected packages: Pillow
Successfully installed Pillow-9.2.0
❯ ./venv/bin/pip install numpy
Collecting numpy
  Using cached numpy-1.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.1 MB)
Installing collected packages: numpy
Successfully installed numpy-1.23.3
❯ ./venv/bin/pip --version
pip 20.0.2

Breaking change comes with pip 21.0

The release notes

❯ ./venv/bin/pip install --upgrade pip==20.3.4
Collecting pip==20.3.4
  Using cached pip-20.3.4-py2.py3-none-any.whl (1.5 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.0.2
    Uninstalling pip-20.0.2:
      Successfully uninstalled pip-20.0.2
Successfully installed pip-20.3.4
❯ ./venv/bin/pip install --upgrade pip==21.0
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))': /simple/pip/
ERROR: Could not find a version that satisfies the requirement pip==21.0
ERROR: No matching distribution found for pip==21.0
WARNING: You are using pip version 20.3.4; however, version 22.2.2 is available.
You should consider upgrading via the '/home/$USER/git/infrastructure-manual-tasks/cropster-csar/resize-login-images/venv/bin/python3 -m pip install --upgrade pip' command.

2

Answers


  1. I have encountered the same issue. Turns out I did some debugging by setting the environment variable SSLKEYLOGFILE to a file that I deleted afterwards, and pip won’t work if it’s unable to access or create this file.

    Removing the environment variable will fix it

    Login or Signup to reply.
  2. Something wrong with SSLKEYLOGFILE. In my case, my SSLKEYLOGFILE was deleted.
    So, you can do this:

    1. Run this code
    import os
    print(os.environ.get('SSLKEYLOGFILE')) 
    #or just os.environ.get('SSLKEYLOGFILE')
    
    1. Move to the path which you got after running this code above
    2. If you didn’t find any dirs where is SSLKeyLogFile or just file, just create it
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search