Page 1 sur 1

from PIL import Image : operation non permise

Posté : sam. 8 janv. 2022 13:37
par piper
Ah python, saloperie de truc
Vous avez déjà eu ceci :
import blabla
no module named babla
Le message est clair, nous n'avez pas la bibliothèque blabla, en général un pip install blabla résoud le problème

Mais alors là après un

Code : Tout sélectionner

pip3 install Pillow
je fais ceci :

Code : Tout sélectionner

import PIL
Tout est OK

Je fais maintenant ceci :

Code : Tout sélectionner

from PIL import Image
Et j'obtiens :
Operation non permise
Ce message est complètement idiot car je ne demande aucune action au système qui pourrait-être réservée à certains utilisateurs.

Bref, après avoir chercher une bonne heure, car cette erreur est très peu documentée (sauf sur Mac, apparemment , là, c'est courant et résolu en installant python par brew mais ça ne répond pas au problème du raspberry).

J'ai fini par résoudre le problème par une désintallation de Pillow suivit d'une installation par :

Code : Tout sélectionner

pip3 install --no-binary :all: Pillow
Ceci pour ne pas télécharger le compilé mais seulement les sources

Même soucis avec psutil :

Code : Tout sélectionner

import psutil
provoquait un "Opération non permise" alors que le module était bien installé (pip3 install psutil terminé avec succès, confirmé par pip3 freeze | grep psutil)
Problème résolu de la même manière ; en forçant à ne prendre que le source

Grrrrrrrrrr 2h de perdue pour ces c....

Je pense que cela vient du fait que j'installe tout cela sur un vieux Pi 1B qui a bien 7 ans. Pourtant Raspbian est à jour dessus. Car sur un Pi zéro, comme sur un Pi3 : aucun soucis, l'installation par pip3 fonctionne très bien et donne le résultat attendu.
A moins que ce ne soit à force de jouer avec mon Pi1 et de tester des tas de choses dessus.

Bref, si vous avez aussi une erreur "Opération non permise" sur un import de module, ça vous donnera une piste

Re: from PIL import Image : operation non permise

Posté : sam. 8 janv. 2022 16:48
par Artemus24
Salut Piper.

Je n'aime pas le langage Python donc je ne l'utilise pas.
Piper a écrit :Je pense que cela vient du fait que j'installe tout cela sur un vieux Pi 1B qui a bien 7 ans. Pourtant Raspbian est à jour dessus.
Je ne pense pas que ta RPi 1B soit en cause.
Inversement, tu dis que ton Raspbian est à jour, je veux bien, mais qu'elle version ?
--> Wheezy, Jessie, Stretch, Buster ou Bullseye ?

Il faudrait voir si ta manipulation est compatible avec la version que tu utilises.

Cordialement.
Artemus24.
@+

Re: from PIL import Image : operation non permise

Posté : sam. 8 janv. 2022 18:30
par Bud Spencer
Problème récurant avec python quand il y a plusieurs versions d'installées sur un meme système.

Re: from PIL import Image : operation non permise

Posté : sam. 8 janv. 2022 18:38
par piper
Bonjour,

Je te rassure, je déteste python aussi non pas à cause de son langage mais de tous ces problèmes de compatibilités, de changements brutaux entre les versions 2.x et 3.x avec incompatibilités entre elles, et de cette saloperie d'indentation (4 espaces/tabulation) et des éditeurs , à moins d'installer une usine à gaz, il n'y a rien de mieux que geany ou notepad++

Bref, ma manipulation est compatible (pip3 force bien l'installation pour python3......et bien oui, j'ai les 2 versions, comme tous les Linux .... excepté Fedora qui a totalement franchi le pas vers Python 3.x et ça fait moins de problèmes)

Pourquoi pip3 et pas pip ? parce que sur mon raspberry, la version par défaut de python est python 2.x donc si je lance pip en fait, je lance pip2 hors moi je veux une installation pour python3 donc j'ai installé pip pour python3 et je le lance via pip3. De même si je tape python, ça lance python2.7 donc pour lancer python 3.x, je tape python3

pip3 install --no-binary :all: Pillow est bien compatible avec ce que je veux faire puisqu'après cela fonctionne.
pip3 install Pillow aurait du suffire mais avec cette commande, je ramasse le binaire et non les sources et c'est là que ça coince : tout s'installe correctement et ensuite from PIL import Image provoque l'erreur "Opération non permise"

from PIL import Image est la base de l'utilisation de Pillow

Dans les 2 cas (que ce soit avec les sources ou avec le binaire), le module que je récupère est de la même version !!!
Ca me fait dire que le binaire n'est pas compilé pour mon raspberry (avec le binaire, ça plante, avec les sources, ça fonctionne)
Dans les 2 cas (binaire ou sources) je récupère Pillow 5.4.1 !

Mon raspberry a le noyau 5.10.63+ ........ c'est donc le n-1 (le dernier est le 5.10.70)
Le dépôt que j'utilise est buster (bullseye vient tout juste de sortir, buster est le n-1)

Et, je ne suis pas spécialiste de pip mais pip n'a que faire du fichier de dépôt d'aptitude donc buster ou pas, comment le sait-il ?
D'ailleurs comme pip s'utilise aussi sur Windows et Mac.....pour moi, pip ne doit avoir à gérer que les dépendances internes à python + l'architecture (Arm, x86, x64)

Re: from PIL import Image : operation non permise

Posté : sam. 8 janv. 2022 19:41
par Artemus24
Salut à tous.
Piper a écrit :mais pip n'a que faire du fichier de dépôt d'aptitude donc buster ou pas, comment le sait il ?
Je ne pensais pas à des entrepôts de Buster ou autre.
Mais au fonctionnement même du "pip" selon les versions installés dans la Raspberry.
Bud Spencer a écrit :Problème récurant avec python quand il y a plusieurs versions d'installées sur un meme système.
Par défaut, il y a deux version d'installés de python dans la Raspberry.
Je ne peux pas désinstaller la version 2.0 de Python car elle est utilisée par l'OS de la Raspberry Pi.

Cordialement.
Artemus24.
@+

Re: from PIL import Image : operation non permise

Posté : sam. 8 janv. 2022 22:15
par piper
Mais au fonctionnement même du "pip" selon les versions installés dans la Raspberry.
Pip utilise sa propre base de données de modules disponibles. Chaque module a un fichier requirements qui fournit à pip les dépendances à vérifier
pip/python sont multi-os. Seule l'architecture est prise en compte (Arm, Intel86 / Amd64).
Par défaut, il y a deux version d'installés de python dans la Raspberry.
Je ne peux pas désinstaller la version 2.0 de Python car elle est utilisée par l'OS de la Raspberry Pi.
Je sais : trop de différences entre les 2 versions et trop de programmes développés sur python2 pour les systèmes linux et trop peu de modules ayant totalement migrés vers python 3 (trop de travail vu les incompatibilités)

Exception faite de Fedora/RedHat : pas de python2.x mais on peut l'installer. Fedora 35 utilise python 3.10 par défaut

Les distributions Debian sont souvent les dernières à franchir le pas vers une nouvelle techno (systemd est sur RaspiOS depuis peu alors que systemd est le gestionnaire de services par défaut de CentOS, Fedora et RedHat depuis 10 ans)
Les défenseurs de debian disent que c'est preuve de fiabilité.......

Re: from PIL import Image : operation non permise

Posté : dim. 9 janv. 2022 12:01
par Bud Spencer
Artemus24 a écrit :
sam. 8 janv. 2022 19:41
Par défaut, il y a deux version d'installés de python dans la Raspberry.
Je ne peux pas désinstaller la version 2.0 de Python car elle est utilisée par l'OS de la Raspberry Pi.
Il ni a pas vraiment de soucis de cohabitation entre python2 et python3. Le probleme est plus lié aux méthodes d’installations des versions mineure (par exemple 3.X.x et 3.Y.x.). Le probleme est bien connu et il y a plein d’outils pour éviter ce genre de désagrément (pienv, pyenv, virtualenv et j’en passe …). Une autre solution est de ne pas utiliser python, mais ca c'est une autre histoire :lol: ...