IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème d'import apparu avec python 3.10


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 214
    Par défaut Problème d'import apparu avec python 3.10
    Hello,
    L'extension EasyDev (disponible ici fichier EasyDev_v2.7.3.oxt qu'on peut ouvrir avec 7zip) pour LibreOffice fonctionnait jusqu'à présent (en python 2.7 et python 3.8) mais avec du python 3.10 (c'est le cas dans Lubuntu 22.04) elle ne s'installe plus.

    Arborescence :

    Nom : ArboEasyDev.png
Affichages : 368
Taille : 22,3 Ko

    Le message d'erreur est :

    <class 'ImportError'>: No module named 'urllib3' (or 'packages.chardet' is unknown), traceback follows
    File "/usr/lib/libreoffice/program/pythonloader.py", line 146, in writeRegistryInfo
    mod = self.getModuleFromUrl( locationUrl )
    File "/usr/lib/libreoffice/program/pythonloader.py", line 101, in getModuleFromUrl
    exec(codeobject, mod.__dict__)
    File "/home/lm/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu157746qn.tmp_/EasyDev_v2.7.3.oxt/EasyDev.py", line 9, in <module>
    from easydev.lorequests import LORequests
    File "/usr/lib/python3/dist-packages/uno.py", line 349, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
    File "/home/lm/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu157746qn.tmp_/EasyDev_v2.7.3.oxt/pythonpath/easydev/lorequests.py", line 4, in <module>
    import requests
    File "/usr/lib/python3/dist-packages/uno.py", line 349, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
    File "/home/lm/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu157746qn.tmp_/EasyDev_v2.7.3.oxt/pythonpath/requests/__init__.py", line 58, in <module>
    from . import utils
    File "/usr/lib/python3/dist-packages/uno.py", line 349, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
    File "/home/lm/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu157746qn.tmp_/EasyDev_v2.7.3.oxt/pythonpath/requests/utils.py", line 26, in <module>
    from .compat import parse_http_list as _parse_list_header
    File "/usr/lib/python3/dist-packages/uno.py", line 349, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
    File "/home/lm/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu157746qn.tmp_/EasyDev_v2.7.3.oxt/pythonpath/requests/compat.py", line 7, in <module>
    from .packages import chardet
    File "/usr/lib/python3/dist-packages/uno.py", line 426, in _uno_import
    raise uno_import_exc
    File "/usr/lib/python3/dist-packages/uno.py", line 349, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
    File "/home/lm/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu157746qn.tmp_/EasyDev_v2.7.3.oxt/pythonpath/requests/packages/__init__.py", line 30, in <module>
    import urllib3
    File "/usr/lib/python3/dist-packages/uno.py", line 349, in _uno_import
    return _builtin_import(name, *optargs, **kwargs)
    Il est à noter que l'extension doit aussi fonctionner en python 2

    Qu'en pensez-vous ?




    Ami calmant, J.P

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par jurassic pork Voir le message
    Qu'en pensez-vous ?
    Ben... déjà tu nous montres un fichier qui date d'il y a 6 ans et qui était codé sous Python v2. Or il a été bien établi que P2 n'est pas compatible ascendant P3.
    Sinon le message d'erreur commence par "No module named 'urllib3' " donc que ça vient probablement de urllib3 qui n'est pas installé (ou pas compatible P3.10). A noter que sur Pypi, la dernière MAJ de cette lib date d'il y a 10 jours.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 214
    Par défaut
    Ben c'est peut être la partie en rouge du code suivant qui pose problème parce que urllib3 est présent dans l'arborescence et lil n'y a pas d'erreurs en python 3.8
    Dans le fichier __init__.py du répertoire packages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from __future__ import absolute_import
    import sys
    try:
        from . import urllib3
        urllib3.disable_warnings()
    except ImportError:
        import urllib3
        sys.modules['%s.urllib3' % __name__] = urllib3
    
    try:
        from . import chardet
    except ImportError:
        import chardet
        sys.modules['%s.chardet' % __name__] = chardet

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 214
    Par défaut
    Bon je crois que j'ai trouvé pourquoi cela ne fonctionne plus. En déboguant le __init__.py dans Thonny avec un python 3.10 j'ai plus d'infos :
    Traceback (most recent call last):
    File "D:\Logiciels\LibreOffice\EasyDev_v2.7.3\pythonpath\requests\packages\__init__.py", line 30, in <module>
    import urllib3
    File "D:\Logiciels\LibreOffice\EasyDev_v2.7.3\pythonpath\requests\packages\urllib3\__init__.py", line 8, in <module>
    from .connectionpool import (
    File "D:\Logiciels\LibreOffice\EasyDev_v2.7.3\pythonpath\requests\packages\urllib3\connectionpool.py", line 42, in <module>
    from .response import HTTPResponse
    File "D:\Logiciels\LibreOffice\EasyDev_v2.7.3\pythonpath\requests\packages\urllib3\response.py", line 8, in <module>
    from ._collections import HTTPHeaderDict
    File "D:\Logiciels\LibreOffice\EasyDev_v2.7.3\pythonpath\requests\packages\urllib3\_collections.py", line 2, in <module>
    from collections import Mapping, MutableMapping
    ImportError: cannot import name 'Mapping' from 'collections' (D:\Logiciels\Python\Python310-32\lib\collections\__init__.py)
    et :
    collections.Mapping deprecated, to be removed in py3.9
    conclusion : la version d'urllib3 dans l'extension est trop ancienne pour les nouvelles versions de python

    La version urllib3 1.26.16 est compatible python 2.7 et python 3 (de 3.6 à 3.11)

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    conclusion : la version d'urllib3 dans l'extension est trop ancienne pour les nouvelles versions de python
    Joli
    J'avais effectivement noté ce détail de P3.8 vs P3.10 sans trouver de raison, tu m'as éclairé à ce sujet
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Ça me fait penser à ça: https://stackoverflow.com/a/69727802/6843158
    dans un contexte différent. Le fix était alors de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from collections import Mapping
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from collections.abc import Mapping
    et c'est effectivement depuis Python 3.10.

    Si je me souviens bien, Backintime avait cessé de marché sur mon Arch Linux lorsque Python a été upgradé vers 3.10, pour la même raison.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probléme d'étude statistique avec python
    Par fafa isfan dans le forum Général Python
    Réponses: 7
    Dernier message: 25/02/2016, 09h37
  2. problème d'import de fichier python
    Par awalter1 dans le forum Général Python
    Réponses: 4
    Dernier message: 19/09/2012, 16h29
  3. [Macro]Problème d'importation .CSV avec macro
    Par Eric Harvey dans le forum VBA Access
    Réponses: 8
    Dernier message: 12/04/2007, 17h04
  4. Problème d'encodage avec Python
    Par tse_tilky_moje_imja dans le forum Général Python
    Réponses: 2
    Dernier message: 22/02/2006, 14h36
  5. Problème d'import avec l'interface sql server
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/08/2004, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo