Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/09/2021, à 07:59

nils.barrellon

Probleme installation module python avec Pip (certificat non valide ?)

Bonjour,
J'enseigne l'informatique au lycée, la nouvelle spécialité NSI et cette année, j'ai réussi à obtenir une classe entièrement dévolue à cet enseignement : j'ai donc mis Ubuntu sur tous les postes élève ! big_smile (le programme précise qu'il est recommandé de faire travailler les élèves sous Linux wink)
Tout tourne mais... je vais avoir besoin de bibliothèques supplémentaires au cours de l'année (networks, pandas,matplotlib...) et je rencontre une difficulté inédite pour les installer avec pip :
- un certificat non reconnu
C'est la première fois que je rencontre ce souci. D'ordinaire, je fais pip install networkx et tout roule. Mais là, impossible !
Voici ce que j'obtiens :

nilsbarrellon@LyceeMontaigneJ14-25:~$ pip install networkx
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /simple/networkx/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /simple/networkx/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /simple/networkx/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /simple/networkx/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))': /simple/networkx/
Could not fetch URL https://pypi.org/simple/networkx/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/networkx/ (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))) - skipping
ERROR: Could not find a version that satisfies the requirement networkx
ERROR: No matching distribution found for networkx

Quelqu'un a-t-il une idée pour me sortir de là ?
Et, deuxième question subsidiaire : peut-on installer ces bibliothèques autrement qu'en ligne de commande ?
Merci d'avance pour votre aide.
Remarque 1 : les postes sont équipés d'Ubuntu 20
Remarque 2 : nous passons par un proxy pour nous connecter à Internet

Hors ligne

#2 Le 13/09/2021, à 11:44

Vobul

Re : Probleme installation module python avec Pip (certificat non valide ?)

Bonjour Nils,

Je viens d'essayer, sans soucis. Peut-être un problème passager type certificat expiré (ça me semble peu probable mais bon).

> peut-on installer ces bibliothèques autrement qu'en ligne de commande ?

Pour quoi faire ?

> Remarque 2 : nous passons par un proxy pour nous connecter à Internet

Dans ce cas, sois sûr d'avoir les variables d'environnement http_proxy et https_proxy configurées. (https://leifengblog.net/blog/how-to-use … d-a-proxy/)

Aussi, petit conseil, si t'as plusieurs postes à configurer, je t'invite fortement à regarder ce que c'est que Ansible. Ça te permettra assez simplement d'installer/configurer tous les postes d'un coup depuis ton ordi.

En tout cas c'est super d'utiliser du GNU/Linux dans ta classe ! smile


Vobul

Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.

Hors ligne

#3 Le 13/09/2021, à 12:43

nils.barrellon

Re : Probleme installation module python avec Pip (certificat non valide ?)

Pour quoi faire ?

Pour les utiliser pardi ! On se rapproche dangereusement de la date à laquelle mes élèves vont avoir besoin de ces bibliothèques et je n'arrive pas à les installer yikes

Pour le proxy, effectivement, si je le configure, je n'ai pas la même erreur, il ne me parle pas de certificat :

nilsbarrellon@LyceeMontaigneJ14-25:~$ sudo pip install --proxy=https://10.175.48.254:3128 folium
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/share/python-wheels/resolvelib-0.5.4-py2.py3-none-any.whl/resolvelib/resolvers.py", line 171, in _merge_into_criterion
    crit = self.state.criteria[name]
KeyError: 'folium'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 223, in _main
    status = self.run(options, args)
  File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 180, in wrapper
    return func(self, options, args)
  File "/usr/lib/python3/dist-packages/pip/_internal/commands/install.py", line 346, in run
    requirement_set = resolver.resolve(
  File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/resolver.py", line 122, in resolve
    self._result = resolver.resolve(
  File "/usr/share/python-wheels/resolvelib-0.5.4-py2.py3-none-any.whl/resolvelib/resolvers.py", line 453, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/usr/share/python-wheels/resolvelib-0.5.4-py2.py3-none-any.whl/resolvelib/resolvers.py", line 318, in resolve
    name, crit = self._merge_into_criterion(r, parent=None)
  File "/usr/share/python-wheels/resolvelib-0.5.4-py2.py3-none-any.whl/resolvelib/resolvers.py", line 173, in _merge_into_criterion
    crit = Criterion.from_requirement(self._p, requirement, parent)
  File "/usr/share/python-wheels/resolvelib-0.5.4-py2.py3-none-any.whl/resolvelib/resolvers.py", line 82, in from_requirement
    if not cands:
  File "/usr/share/python-wheels/resolvelib-0.5.4-py2.py3-none-any.whl/resolvelib/structs.py", line 124, in __bool__
    return bool(self._sequence)
  File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 99, in __bool__
    return any(self)
  File "/usr/lib/python3/dist-packages/pip/_internal/resolution/resolvelib/factory.py", line 220, in iter_index_candidates
    result = self._finder.find_best_candidate(
  File "/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", line 882, in find_best_candidate
    candidates = self.find_all_candidates(project_name)
  File "/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", line 825, in find_all_candidates
    package_links = self.process_project_url(
  File "/usr/lib/python3/dist-packages/pip/_internal/index/package_finder.py", line 789, in process_project_url
    html_page = self._link_collector.fetch_page(project_url)
  File "/usr/lib/python3/dist-packages/pip/_internal/index/collector.py", line 618, in fetch_page
    return _get_html_page(location, session=self.session)
  File "/usr/lib/python3/dist-packages/pip/_internal/index/collector.py", line 430, in _get_html_page
    resp = _get_html_response(url, session=session)
  File "/usr/lib/python3/dist-packages/pip/_internal/index/collector.py", line 127, in _get_html_response
    resp = session.get(
  File "/usr/share/python-wheels/requests-2.25.1-py2.py3-none-any.whl/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python3/dist-packages/pip/_internal/network/session.py", line 428, in request
    return super(PipSession, self).request(method, url, *args, **kwargs)
  File "/usr/share/python-wheels/requests-2.25.1-py2.py3-none-any.whl/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/share/python-wheels/requests-2.25.1-py2.py3-none-any.whl/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/share/python-wheels/CacheControl-0.12.6-py2.py3-none-any.whl/cachecontrol/adapter.py", line 53, in send
    resp = super(CacheControlAdapter, self).send(request, **kw)
  File "/usr/share/python-wheels/requests-2.25.1-py2.py3-none-any.whl/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/share/python-wheels/urllib3-1.26.2-py2.py3-none-any.whl/urllib3/connectionpool.py", line 696, in urlopen
    self._prepare_proxy(conn)
  File "/usr/share/python-wheels/urllib3-1.26.2-py2.py3-none-any.whl/urllib3/connectionpool.py", line 966, in _prepare_proxy
    conn.connect()
  File "/usr/share/python-wheels/urllib3-1.26.2-py2.py3-none-any.whl/urllib3/connection.py", line 359, in connect
    conn = self._connect_tls_proxy(hostname, conn)
  File "/usr/share/python-wheels/urllib3-1.26.2-py2.py3-none-any.whl/urllib3/connection.py", line 500, in _connect_tls_proxy
    return ssl_wrap_socket(
  File "/usr/share/python-wheels/urllib3-1.26.2-py2.py3-none-any.whl/urllib3/util/ssl_.py", line 432, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls)
  File "/usr/share/python-wheels/urllib3-1.26.2-py2.py3-none-any.whl/urllib3/util/ssl_.py", line 474, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock)
  File "/usr/lib/python3.9/ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "/usr/lib/python3.9/ssl.py", line 997, in _create
    raise ValueError("check_hostname requires server_hostname")
ValueError: check_hostname requires server_hostname

Mais ça ne marche toujours pas.
Rq 1 : Ansible me rendrait il est vrai de fiers services tant j'en ai marre de passer d'un poste à l'autre pour installer un truc
Rq 2 : je suis un peu moins stressé, j'ai réussi à installer matplotlib, pandas et networkx avec apt mais cela n'empêche, pip est quand même incontournable.

Hors ligne

#4 Le 13/09/2021, à 16:33

Vobul

Re : Probleme installation module python avec Pip (certificat non valide ?)

nils.barrellon a écrit :

Pour quoi faire ?

Pour les utiliser pardi !

Nan mais je demandais pourquoi vouloir utiliser un GUI. Mais bon je suis un hardcore CLI guy aussi....

Pour ton problème, t'as vu ça :
https://stackoverflow.com/questions/666 … r-hostname

Et aussi, c'est vraiment pas une super idée de sudo pip install. Sois tu fais --user, sois tu utilises pipenv ou poetry. Voir : https://dev.to/elabftw/stop-using-sudo-pip-install-52mn


Vobul

Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.

Hors ligne

#5 Le 17/09/2021, à 12:30

nils.barrellon

Re : Probleme installation module python avec Pip (certificat non valide ?)

Salut,
un de mes élèves a trouvé la solution qui pourrait servir à quelqu'un...
Il suffit de faire

nilsbarrellon@LyceeMontaigneJ14-25:~$ pip install --proxy=https://xxx.xxx.xxx.xxx:yyyy package

avec yyyy le port smile

Hors ligne

#6 Le 20/09/2021, à 15:07

Lolorase

Re : Probleme installation module python avec Pip (certificat non valide ?)

Salut,

Sans le sudo donc, si je comprends bien ?
Tu avais essayé :

sudo pip install --proxy=https://10.175.48.254:3128 folium

ça me paraît louche cette histoire... wink

En revanche, il me semple que la commande c'est plutôt :

sudo python -m  pip install --proxy=https://10.175.48.254:3128 folium

à vérifier... (je ne suis pas devant un linux... et j'en pleure)

Dernière modification par Lolorase (Le 20/09/2021, à 15:12)

Hors ligne

#7 Le 20/09/2021, à 15:36

Vobul

Re : Probleme installation module python avec Pip (certificat non valide ?)

nan mais arrêtez avec vos sudo là ! C'est une très mauvaise idée d'installer des paquets python en root ! Voir deuxième lien du #4.

Et "python -m" ou "pip" ça ne doit pas changer grand chose à mon humble avis.


Vobul

Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.

Hors ligne