web-dev-qa-db-fra.com

Pip SSL Error sous Windows

J'utilise Python 3.x sur Windows 7 64 bits dans un environnement sans contrôle total du traitement du trafic entrant/sortant. Jusqu'à cette semaine, j'ai pu utiliser le drapeau --trusted-Host pypi.python.org avec pip et tout a fonctionné. Cette semaine, j'ai commencé à avoir l'erreur suivante, même avec l'indicateur --trusted-Host.

Could not fetch URL https://pypi.python.org/simple/pytubes/: There was a probl
em confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate
verify failed (_ssl.c:720) - skipping

J'ai essayé de changer le drapeau --trusted-Host en https://files.pythonhosted.org/packages/ à la lumière du changement de pypi cette semaine, mais cela n'a pas semblé aider.

J'ai également essayé de télécharger et d'installer les disques de certifi, wincerstore et win32 certifi, ainsi que d'autres suggestions de stackoverflow pour ce type de problème, comme le digistore .pem cert et le fichier pip.ini, sans succès. 

L'installation de pip échoue avec "erreur de connexion: [SSL: CERTIFICATE_VERIFY_FAILED] échec de la vérification du certificat (_ssl.c: 598)"

Enfin, j'ai essayé de mettre à niveau pip en pip 10 depuis le pip 9.0.3 en suivant les instructions suivantes: https://pip.pypa.io/fr/stable/installing/

Pour le téléchargement curl, je devais passer -k, et exécuter python get-pip.py échoue avec une erreur ssl similaire à pip:

 Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),)': /simple/pip/
  Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(Host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),)) - skipping
  Could not find a version that satisfies the requirement pip (from versions: )
No matching distribution found for pip
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(Host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),)) - skipping

Appréciez toutes les suggestions pour les prochaines étapes, car le fichier .pem, les packages Python CA et --trusted-Host ne font pas l'affaire.

Modifier:

Nouvelle sortie avec l'indicateur -vvv dans pip d'une réponse ci-dessous.

 > pip install pytubes -vvv
Config variable 'Py_DEBUG' is unset, Python ABI tag may be incorrect
Config variable 'WITH_PYMALLOC' is unset, Python ABI tag may be incorrect
Collecting pytubes
  1 location(s) to search for versions of pytubes:
  * https://pypi.python.org/simple/pytubes/
  Getting page https://pypi.python.org/simple/pytubes/
  Looking up "https://pypi.python.org/simple/pytubes/" in the cache
  No cache entry available
  Starting new HTTPS connection (1): pypi.python.org
  Could not fetch URL https://pypi.python.org/simple/pytubes/: There was a probl
em confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate
verify failed (_ssl.c:749) - skipping
  Could not find a version that satisfies the requirement pytubes (from versions
: )
Cleaning up...
No matching distribution found for pytubes
Exception information:
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\basecommand.py", line 215
, in main
    status = self.run(options, args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\commands\install.py", lin
e 335, in run
    wb.build(autobuilding=True)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\wheel.py", line 749, in b
uild
    self.requirement_set.prepare_files(self.Finder)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 380
, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_set.py", line 554
, in _prepare_file
    require_hashes
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\req\req_install.py", line
 278, in populate_link
    self.link = Finder.find_requirement(self, upgrade)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\index.py", line 514, in f
ind_requirement
    'No matching distribution found for %s' % req
pip.exceptions.DistributionNotFound: No matching distribution found for pytubes
Looking up "https://pypi.python.org/pypi/pip/json" in the cache
No cache entry available
Starting new HTTPS connection (1): pypi.python.org
There was an error checking the latest version of pip
Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\packages
\urllib3\connectionpool.py", line 595, in urlopen
    chunked=chunked)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\packages
\urllib3\connectionpool.py", line 352, in _make_request
    self._validate_conn(conn)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\packages
\urllib3\connectionpool.py", line 831, in _validate_conn
    conn.connect()
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\packages
\urllib3\connection.py", line 289, in connect
    ssl_version=resolved_ssl_version)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\packages
\urllib3\util\ssl_.py", line 308, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\ProgramData\Anaconda3\lib\ssl.py", line 401, in wrap_socket
    _context=self, _session=session)
  File "C:\ProgramData\Anaconda3\lib\ssl.py", line 808, in __init__
    self.do_handshake()
  File "C:\ProgramData\Anaconda3\lib\ssl.py", line 1061, in do_handshake
    self._sslobj.do_handshake()
  File "C:\ProgramData\Anaconda3\lib\ssl.py", line 683, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c
:749)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\adapters
.py", line 423, in send
    timeout=timeout
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\packages
\urllib3\connectionpool.py", line 621, in urlopen
    raise SSLError(e)
pip._vendor.requests.packages.urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VER
IFY_FAILED] certificate verify failed (_ssl.c:749)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\utils\outdated.py", line
126, in pip_version_check
    headers={"Accept": "application/json"},
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\sessions
.py", line 488, in get
    return self.request('GET', url, **kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\download.py", line 386, i
n request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\sessions
.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\sessions
.py", line 596, in send
    r = adapter.send(request, **kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\cachecontrol\adap
ter.py", line 47, in send
    resp = super(CacheControlAdapter, self).send(request, **kw)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pip\_vendor\requests\adapters
.py", line 497, in send
    raise SSLError(e, request=request)
pip._vendor.requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certi
ficate verify failed (_ssl.c:749)
4
Alexander

Ce qui a finalement fonctionné pour moi, c’est d’ajouter tous les domaines faisant partie du nouveau routage Pypi.

pip install --trusted-Host pypi.org --trusted-Host pypi.python.org --trusted-Host files.pythonhosted.org <package>

Qui peut également être configuré dans un fichier pip.ini.

13
Alexander

Vous êtes probablement derrière un serveur proxy méchant qui effectue une attaque de type man-in-the-middle pour effectuer une inspection en profondeur des paquets. Pour pouvoir dire à Python que tout va bien, vous devez obtenir le fichier de certificat de l'autorité de certification de votre administrateur proxy. Vous pouvez également extraire cela de votre navigateur Web ou de tout autre élément configuré pour fonctionner avec le proxy.

Lorsque vous avez obtenu le certificat, vous pouvez soit l'ajouter au fichier cacert.pem du package certifi, soit en informer pip directement à l'aide de l'option --cert ou de global.cert dans le fichier pip.conf.

4

J'ai des problèmes similaires avec pip depuis quelques jours. Il semble qu'ils aient mis à jour le certificat de sécurité pour pypi.python.org, puisqu'il est valide à partir du 28 mars 2018 et qu'il ne prend en charge que TLS 1.2.

Pour plus d'informations sur le certificat actuellement utilisé, voir ici .

MODIFIER:

Doublage possible de pip échoue toujours à la vérification ssl

EDIT2:

@Alexander: Quelle version de Python 3.X utilisez-vous exactement? Assurez-vous d’avoir au moins Python 3.1, il suffit de faire python --version.

EDIT3:

Je voulais dire: 3.6.1.

1
GiulioP

J'ai eu le même proplem et je l'ai résolu lors de l'installation de tensorflow. Voici la solution par étapes:

  1. Accédez au fichier relatif à SSL. Recherchez le dossier dans l'emplacement d'installation, où se trouve sessions.py. (Je suppose que c'est dans le dossier ~~~ pip vendeur ₩ demandes)

  2. Ouvrez sessions.py et modifiez self.verify = True en self.verify = False

  3. Installez en utilisant le code de l'hôte approuvé comme ci-dessous

    pip install --trusted-Host pypi.org --trusted-Host files.pythonhosted.org <package name> 
    
0
Soohan Kim