Projet

Général

Profil

Bug #55974

ModuleNotFoundError: No module named 'lasso'

Ajouté par Nicolas Roche il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
04 août 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

$ ansible-playbook -K -i inventory.yml install.ym
...
hobo-manage migrate_schemas
File "/home/nroche/src/django-mellon/mellon/__init__.py", line 2, in <module>
import lasso
ModuleNotFoundError: No module named 'lasso'

$ ls /home/nroche/envs/publik-env-py3/lib/python3.9/site-packages/ -l | grep lasso
lrwxrwxrwx  1 nroche nroche    41  4 août  11:46 _lasso.* -> /usr/lib/python3.9/site-packages/_lasso.*
lrwxrwxrwx  1 nroche nroche    41  4 août  11:46 lasso.py -> /usr/lib/python3.9/site-packages/lasso.py

Fichiers

Révisions associées

Révision b79f450d (diff)
Ajouté par Thomas Noël il y a plus de 2 ans

debianize getlasso3.sh (#55974)

Historique

#1

Mis à jour par Nicolas Roche il y a plus de 2 ans

J'ai l'impression que le script getlasso.j2 ne va pas chercher la librairie au bon endroit (site-packages au lieu de dist-packages) :

$ dpkg -S /usr/lib/python3/dist-packages/_lasso.cpython-39-x86_64-linux-gnu.so
python3-lasso: /usr/lib/python3/dist-packages/_lasso.cpython-39-x86_64-linux-gnu.so

https://wiki.debian.org/Python

Third party Python software installed from Debian packages goes into dist-packages, not site-packages.

c'est à dire que cette ligne là ne fait pas le nécessaire :

SRCDIR=`{{system_python}} -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'`

comme je pense le montrer ici :

$ . ~/envs/publik-env-py3/bin/activate
$ /usr/bin/python3 -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'
/usr/lib/python3.9/site-packages

#2

Mis à jour par Thomas Noël il y a plus de 2 ans

Oui, le getlasso.j2 n'est pas bon ; prendre plutôt exemple sur le getlasso3 fourni par django-mellon.

#3

Mis à jour par Thomas Noël il y a plus de 2 ans

#4

Mis à jour par Nicolas Roche il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#5

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

  • Statut changé de Solution validée à En cours

Nicolas Roche a écrit :

comme je pense le montrer ici :
[...]

Tu ne fais pas ce que fait ansible, qui n'active pas le virtualenv avant de taper la commande.

Ansible fait juste la chose suivant qui marche très bien, ton problème est ailleurs :

cazino@cazino-laptop:~$ /usr/bin/python3 -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'
/usr/lib/python3/dist-packages
#6

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

Sûrement que tu lances le playbook ansible avec ton virtualenv activé, il ne faut pas faire ça.

#7

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Comment on reproduit le bug ? Si je fais ansible-playbook -K -i inventory.yml install.ym puis ~/envs/publik-env-py3/bin/hobo-manage migrate_schemas ça fonctionne très bien.

#8

Mis à jour par Thomas Noël il y a plus de 2 ans

  • Statut changé de En cours à Résolu (à déployer)

J'ai oublié de dire que

commit b79f450d6fcea6c91b041534d4938eb1d8d57162
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Wed Aug 4 15:19:19 2021 +0200

    debianize getlasso3.sh (#55974)

diff --git a/roles/base/templates/getlasso.j2 b/roles/base/templates/getlasso.j2
index c2246b2..f8a6218 100644
--- a/roles/base/templates/getlasso.j2
+++ b/roles/base/templates/getlasso.j2
@@ -3,15 +3,15 @@
 # Get venv site-packages path
 DSTDIR=`{{virtualenv_python}} -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'`

-SRCDIR=`{{system_python}} -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())'`
-
 # Clean up
 rm -f $DSTDIR/lasso.*
 rm -f $DSTDIR/_lasso.*

 # Link
-ln -sv $SRCDIR/lasso.py $DSTDIR
-ln -sv $SRCDIR/_lasso.* $DSTDIR
+ln -sv /usr/lib/python3/dist-packages/lasso.py $DSTDIR/
+for SOFILE in /usr/lib/python3/dist-packages/_lasso.cpython-*.so
+do
+  ln -sv $SOFILE $DSTDIR/
+done

 exit 0

#9

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

(qui servait sûrement rien mais je le laisse puisque ça continue à marcher).

#10

Mis à jour par Thomas Noël il y a plus de 2 ans

Emmanuel Cazenave a écrit :

(qui servait sûrement rien mais je le laisse puisque ça continue à marcher).

C'était bien confusé par le getlasso.sh qui se trouve installé dans ../envs/publik-env-py3/bin/getlasso.sh mais qui ne doit pas être lancé depuis le venv (sinon il casse les liens). Et donc là, le getlasso.sh de maintenant il marche aussi bien en dehors qu'en dedans le venv et la vie est plus belle.

#11

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF