Bug #38017
authentic2_auth_fc:Plugin ImportError('No module named Crypto.Cipher',)
0%
Description
Sur une installation toute neuve du paquet authentic2-multitenant, j'ai cette erreur :
# apt install authentic2-multitenant ... Paramétrage de authentic2-multitenant (2.18-1~eob90+1) ... Generating a secret key....done [....] Updating authentic2: authentic2-multitenant[info] Applying new migrations ... No handlers could be found for logger "authentic2.plugins" Traceback (most recent call last): File "/usr/lib/authentic2/manage.py", line 21, in <module> execute_from_command_line(sys.argv[:1] + argv) File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line utility.execute() File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 308, in execute settings.INSTALLED_APPS File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 56, in __getattr__ self._setup(name) File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 41, in _setup self._wrapped = Settings(settings_module) File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 110, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/usr/lib/python2.7/dist-packages/authentic2/settings.py", line 113, in <module> MIDDLEWARE_CLASSES = plugins.register_plugins_middleware(MIDDLEWARE_CLASSES) File "/usr/lib/python2.7/dist-packages/authentic2/plugins.py", line 102, in register_plugins_middleware for plugin in get_plugins(group_name): File "/usr/lib/python2.7/dist-packages/authentic2/plugins.py", line 56, in get_plugins raise PluginError('unable to load entrypoint %s' % entrypoint, e) authentic2.plugins.PluginError: ('unable to load entrypoint authentic2-auth-fc = authentic2_auth_fc:Plugin', ImportErr or('No module named Crypto.Cipher',)) [info] .. done. [info] Collect static files... No handlers could be found for logger "authentic2.plugins" Traceback (most recent call last): File "/usr/lib/authentic2/manage.py", line 21, in <module> execute_from_command_line(sys.argv[:1] + argv) File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 364, in execute_from_command_line utility.execute() File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 308, in execute settings.INSTALLED_APPS File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 56, in __getattr__ self._setup(name) File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 41, in _setup self._wrapped = Settings(settings_module) File "/usr/lib/python2.7/dist-packages/django/conf/__init__.py", line 110, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/usr/lib/python2.7/dist-packages/authentic2/settings.py", line 113, in <module> MIDDLEWARE_CLASSES = plugins.register_plugins_middleware(MIDDLEWARE_CLASSES) File "/usr/lib/python2.7/dist-packages/authentic2/plugins.py", line 102, in register_plugins_middleware for plugin in get_plugins(group_name): File "/usr/lib/python2.7/dist-packages/authentic2/plugins.py", line 56, in get_plugins raise PluginError('unable to load entrypoint %s' % entrypoint, e) authentic2.plugins.PluginError: ('unable to load entrypoint authentic2-auth-fc = authentic2_auth_fc:Plugin', ImportErr or('No module named Crypto.Cipher',)) [info] .. done. . ok Created symlink /etc/systemd/system/multi-user.target.wants/authentic2-multitenant.service → /lib/systemd/system/authe ntic2-multitenant.service. Job for authentic2-multitenant.service failed because the control process exited with error code. See "systemctl status authentic2-multitenant.service" and "journalctl -xe" for details. invoke-rc.d: initscript authentic2-multitenant, action "start" failed. ● authentic2-multitenant.service - Authentic 2 (multitenants) Loaded: loaded (/lib/systemd/system/authentic2-multitenant.service; enabled; vendor preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Wed 2019-11-27 17:27:39 CET; 10ms ago Process: 23605 ExecStartPre=/usr/bin/authentic2-multitenant-manage migrate_schemas --noinput (code=exited, status=1/ FAILURE) nov. 27 17:27:39 lille-vm3 systemd[1]: authentic2-multitenant.service: Unit entered failed state. nov. 27 17:27:39 lille-vm3 systemd[1]: authentic2-multitenant.service: Failed with result 'exit-code'. dpkg: erreur de traitement du paquet authentic2-multitenant (--configure) : le sous-processus script post-installation installé a retourné une erreur de sortie d'état 1 Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u12) ... Des erreurs ont été rencontrées pendant l'exécution : authentic2-multitenant E: Sub-process /usr/bin/dpkg returned an error code (1)
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
Ça vient normalement de python-pycryptodome qui sur stretch vient de stretch-backports. J'ai vérifié on a bien une dépendance sur python-pycryptodome je ne vois pas comment ça a pu s'installer sans.
Mis à jour par Thomas Noël il y a plus de 4 ans
Avec python-pycryptodome installé :
entrouvert@lille-vm3:/etc/nginx/sites-enabled$ apt-cache policy python-pycryptodome python-pycryptodome: Installé : 3.4.7-1~bpo9+1 Candidat : 3.4.7-1~bpo9+1 Table de version : *** 3.4.7-1~bpo9+1 100 100 http://deb.debian.org/debian stretch-backports/main amd64 Packages 100 /var/lib/dpkg/status entrouvert@lille-vm3:/etc/nginx/sites-enabled$ python -c "import Crypto" Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named Crypto
parce que ça s'appelle en fait Cryptodome ... (/usr/lib/python2.7/dist-packages/Cryptodome)
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
Le cryptodome de Debian n'est pas le cryptodome de pypi mais cryptodomex avec un nouveau nom de package (voir https://pycryptodome.readthedocs.io/en/latest/src/installation.html).
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
On doit adapter le code pour faire un try/excep ImportError et tester les deux noms.
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
Aussi en attendant faire apt install python-crypto
c'est pour cela que ça fonctionne en recette (python-crypto est déjà là).
Mis à jour par Thomas Noël il y a plus de 4 ans
Benjamin Dauvergne a écrit :
Aussi en attendant faire
apt install python-crypto
c'est pour cela que ça fonctionne en recette (python-crypto est déjà là).
Yep j'avais rapidement tapé cela, c'est ce qui m'avait fait piger que cryptodome (celui de Debian) ne remplaçait pas Crypto.
Mis à jour par Thomas Noël il y a plus de 4 ans
- Fichier 0001-crypto-use-Cryptodome-if-available-38017.patch 0001-crypto-use-Cryptodome-if-available-38017.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Assigné à changé de Paul Marillonnet à Thomas Noël
- Patch proposed changé de Non à Oui
(zut, désolé Paul j'avais pas vu que tu avais pris le ticket... donc j'ai rapidement pondu ce patch. Il est testé "à la main" en modifiant le setup.py pour indiquer pycryptodomex à la place de pycryptodome)
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- Statut changé de Solution proposée à Solution validée
Tant qu'à faire je me dis qu'on pourrait juste passer sur cryptodomex puisque c'est ça que Debian distribue (je veux dire mettre cryptodomex définitivement dans setup.py).
Mis à jour par Thomas Noël il y a plus de 4 ans
- Fichier 0001-crypto-use-pycrytodomex-replace-Crypto-with-Cryptodo.patch 0001-crypto-use-pycrytodomex-replace-Crypto-with-Cryptodo.patch ajouté
- Statut changé de Solution validée à Solution proposée
Benjamin Dauvergne a écrit :
Tant qu'à faire je me dis qu'on pourrait juste passer sur cryptodomex puisque c'est ça que Debian distribue (je veux dire mettre cryptodomex définitivement dans setup.py).
J'ai pensé à ça aussi, et virer les ImportError, ça éviterait toute embrouille future. Voici donc un autre patch (pushé dans la branche wip/38017). Appelons-le "le patch domex", et faites votre choix entre les deux !
Mis à jour par Benjamin Dauvergne il y a plus de 4 ans
- Statut changé de Solution proposée à Solution validée
C'est parti pour le 2ème patch.
Mis à jour par Thomas Noël il y a plus de 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 0fc5a97113a45117a5ff4e52e86f8a247c3eaed6 Author: Thomas NOËL <tnoel@entrouvert.com> Date: Wed Nov 27 23:24:00 2019 +0100 crypto: use pycrytodomex, replace Crypto with Cryptodome (#38017) mainly because Debian python-cryptodome package use pycrytodomex, which is a library independent of the old PyCrypto, available under the Cryptodome name.
Mis à jour par Frédéric Péters il y a plus de 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Nicolas Roche il y a presque 4 ans
- Lié à Development #43563: Des tests de combo sont cassés en python3.8 ajouté
crypto: use pycrytodomex, replace Crypto with Cryptodome (#38017)
mainly because Debian python-cryptodome package use pycrytodomex, which
is a library independent of the old PyCrypto, available under the
Cryptodome name.