Contenu | Rechercher | Menus

Annonce

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 08/11/2021, à 23:39

alex2423

Librairies pour lire/écrire les commentaires IPTC des JPEG de < 150Mo

Hello tout le monde,

Sous Bash, il existe la commande exiv2 -PIkyct pour lire les commentaires d'une photo enregistré dans les métatag IPTC, les tags utilisés sur la très grande majorité des logiciels de photo et visualisateur.

J'ai voulu installé son équivalent Python py3exiv2
https://pypi.org/project/py3exiv2/
http://py3exiv2.tuxfamily.org/


J'installe non sans mal py3exiv2, "pip3 install py3exiv2" me retournant à plusieurs reprises des erreurs.
J'installe wheel via pip3, puis libexiv2-dev mais toujours une erreur. 

(script_photo) kfocal@kfocal:~/Documents/python$ sudo pip3 install py3exiv2
Collecting py3exiv2
  Downloading py3exiv2-0.9.3.tar.gz (36 kB)
Building wheels for collected packages: py3exiv2
  Building wheel for py3exiv2 (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ze4i12nl/py3exiv2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ze4i12nl/py3exiv2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-t0m32yud                
       cwd: /tmp/pip-install-ze4i12nl/py3exiv2/                                                                                            
  Complete output (24 lines):                                                                                                              
  running bdist_wheel                                                                                                                      
  running build                                                                                                                            
  running build_py                                                                                                                         
  creating build                                                                                                                           
  creating build/lib.linux-x86_64-3.8                                                                                                      
  creating build/lib.linux-x86_64-3.8/pyexiv2                                                                                              
  copying src/pyexiv2/exif.py -> build/lib.linux-x86_64-3.8/pyexiv2                                                                        
  copying src/pyexiv2/xmp.py -> build/lib.linux-x86_64-3.8/pyexiv2                                                                         
  copying src/pyexiv2/utils.py -> build/lib.linux-x86_64-3.8/pyexiv2                                                                       
  copying src/pyexiv2/iptc.py -> build/lib.linux-x86_64-3.8/pyexiv2                                                                        
  copying src/pyexiv2/__init__.py -> build/lib.linux-x86_64-3.8/pyexiv2                                                                    
  copying src/pyexiv2/preview.py -> build/lib.linux-x86_64-3.8/pyexiv2                                                                     
  copying src/pyexiv2/metadata.py -> build/lib.linux-x86_64-3.8/pyexiv2                                                                    
  running build_ext                                                                                                                        
  building 'libexiv2python' extension                                                                                                      
  creating build/temp.linux-x86_64-3.8                                                                                                     
  creating build/temp.linux-x86_64-3.8/src                                                                                                 
  x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.8 -c src/exiv2wrapper.cpp -o build/temp.linux-x86_64-3.8/src/exiv2wrapper.o -g                                             
  In file included from src/exiv2wrapper.cpp:27:                                                                                           
  src/exiv2wrapper.hpp:34:10: fatal error: boost/python.hpp: No such file or directory                                                     
     34 | #include "boost/python.hpp"                                                                                                      
        |          ^~~~~~~~~~~~~~~~~~                                                                                                      
  compilation terminated.                                                                                                                  
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1                                                                          
  ----------------------------------------                                                                                                 
  ERROR: Failed building wheel for py3exiv2

et bingo, hingo, je finis par trouver, il faut installer libboost-python-dev

(script_photo) kfocal@kfocal:~/Documents/python$ sudo apt install libboost-python-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gconf-service gconf-service-backend gconf2 gconf2-common libappindicator1 libbonobo2-0 libbonobo2-common libbonoboui2-0
  libbonoboui2-common libdbusmenu-gtk4 libgconf-2-4 libgnome-2-0 libgnome-keyring-common libgnome-keyring0 libgnome2-canvas-perl
  libgnome2-common libgnome2-gconf-perl libgnome2-perl libgnome2-vfs-perl libgnome2-wnck-perl libgnomeui-0 libgnomeui-common
  libgnomevfs2-0 libgnomevfs2-common libgnomevfs2-extra libgoo-canvas-perl libgoocanvas-common libgoocanvas3 libgtk2-appindicator-perl
  libgtk2-imageview-perl libgtk2-perl libgtk2-unique-perl libgtkimageview0 liborbit-2-0 libunique-1.0-0 libwnck-common libwnck22 shim
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libboost-python1.71-dev libboost-python1.71.0 libboost1.71-dev
Suggested packages:
  libboost1.71-doc gccxml libboost-atomic1.71-dev libboost-chrono1.71-dev libboost-container1.71-dev libboost-context1.71-dev
  libboost-contract1.71-dev libboost-coroutine1.71-dev libboost-date-time1.71-dev libboost-exception1.71-dev libboost-fiber1.71-dev
  libboost-filesystem1.71-dev libboost-graph1.71-dev libboost-graph-parallel1.71-dev libboost-iostreams1.71-dev libboost-locale1.71-dev
  libboost-log1.71-dev libboost-math1.71-dev libboost-mpi1.71-dev libboost-mpi-python1.71-dev libboost-numpy1.71-dev
  libboost-program-options1.71-dev libboost-random1.71-dev libboost-regex1.71-dev libboost-serialization1.71-dev
  libboost-stacktrace1.71-dev libboost-system1.71-dev libboost-test1.71-dev libboost-thread1.71-dev libboost-timer1.71-dev
  libboost-type-erasure1.71-dev libboost-wave1.71-dev libboost1.71-tools-dev libmpfrc++-dev libntl-dev
The following NEW packages will be installed:
  libboost-python-dev libboost-python1.71-dev libboost-python1.71.0 libboost1.71-dev
0 upgraded, 4 newly installed, 0 to remove and 41 not upgraded.
Need to get 9649 kB of archives.
After this operation, 143 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://fr.archive.ubuntu.com/ubuntu focal/main amd64 libboost1.71-dev amd64 1.71.0-6ubuntu6 [9068 kB]
Get:2 http://fr.archive.ubuntu.com/ubuntu focal/main amd64 libboost-python1.71.0 amd64 1.71.0-6ubuntu6 [278 kB]                           
Get:3 http://fr.archive.ubuntu.com/ubuntu focal/universe amd64 libboost-python1.71-dev amd64 1.71.0-6ubuntu6 [300 kB]                     
Get:4 http://fr.archive.ubuntu.com/ubuntu focal/universe amd64 libboost-python-dev amd64 1.71.0.0ubuntu2 [3688 B]                        
Fetched 9649 kB in 39s (248 kB/s)                                                                                                        
Selecting previously unselected package libboost1.71-dev:amd64.
(Reading database ... 381428 files and directories currently installed.)
Preparing to unpack .../libboost1.71-dev_1.71.0-6ubuntu6_amd64.deb ...
Unpacking libboost1.71-dev:amd64 (1.71.0-6ubuntu6) ...
Selecting previously unselected package libboost-python1.71.0.
Preparing to unpack .../libboost-python1.71.0_1.71.0-6ubuntu6_amd64.deb ...
Unpacking libboost-python1.71.0 (1.71.0-6ubuntu6) ...
Selecting previously unselected package libboost-python1.71-dev.
Preparing to unpack .../libboost-python1.71-dev_1.71.0-6ubuntu6_amd64.deb ...
Unpacking libboost-python1.71-dev (1.71.0-6ubuntu6) ...
Selecting previously unselected package libboost-python-dev.
Preparing to unpack .../libboost-python-dev_1.71.0.0ubuntu2_amd64.deb ...
Unpacking libboost-python-dev (1.71.0.0ubuntu2) ...
Setting up libboost1.71-dev:amd64 (1.71.0-6ubuntu6) ...
Setting up libboost-python1.71.0 (1.71.0-6ubuntu6) ...
Setting up libboost-python1.71-dev (1.71.0-6ubuntu6) ...
Setting up libboost-python-dev (1.71.0.0ubuntu2) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
(script_photo) kfocal@kfocal:~/Documents/python$ 

Puis enfin je peux installer la librairie

(script_photo) kfocal@kfocal:~/Documents/python$ sudo pip3 install py3exiv2
Collecting py3exiv2
  Using cached py3exiv2-0.9.3.tar.gz (36 kB)
Building wheels for collected packages: py3exiv2
  Building wheel for py3exiv2 (setup.py) ... done
  Created wheel for py3exiv2: filename=py3exiv2-0.9.3-cp38-cp38-linux_x86_64.whl size=1009801 sha256=0459fb92090e98ae5140fafc7d125bfec89595719e8eb086b5cb1d6fbb82318e
  Stored in directory: /root/.cache/pip/wheels/04/38/4f/127065904d15ef634136439ca85715a24f81a92329e2fcdc90
Successfully built py3exiv2
Installing collected packages: py3exiv2
Successfully installed py3exiv2-0.9.3
(script_photo) kfocal@kfocal:~/Documents/python$

Mais quand on regarde de plus près l'installation de boost, c'est pas loin de 150Mo !!!!

The following NEW packages will be installed:
  libboost-python-dev libboost-python1.71-dev libboost-python1.71.0 libboost1.71-dev
0 upgraded, 4 newly installed, 0 to remove and 41 not upgraded.
Need to get 9649 kB of archives.
After this operation, 143 MB of additional disk space will be used.

Je ne suis pas à 150Mo, même avec un SSD, mais je trouve que c'est n'importe d'avoir 150Mo de librairie, juste pour manipuler le pendant Python exiv2. Trouvez vous cela normal ?

Je trouve cela un peu beaucoup pour une simple librairie. Vachement décu.

Quelle librairies utilisez vous ?
Je vois qu'il y en a plusieurs. IPTCInfo a comme date de dernière mise à jour 2016, je pense qu'elle est un peu abandonné.

Hors ligne

#2 Le 09/11/2021, à 10:36

ptilou007

Re : Librairies pour lire/écrire les commentaires IPTC des JPEG de < 150Mo

bonjour,

je le fait à la mano, sinon y a identify sous imagemagick !

ptilou

Hors ligne

#3 Le 09/11/2021, à 18:22

kamaris

Re : Librairies pour lire/écrire les commentaires IPTC des JPEG de < 150Mo

Ce n'est pas la bibliothèque en elle-même (les binaires) qui pèse ce poids, ce sont les fichiers de dev, nécessaires seulement pour le build.
Une fois ce build fait, tu dois pouvoir te débarrasser des dépendances en *-dev.

Dernière modification par kamaris (Le 09/11/2021, à 18:22)

Hors ligne

#4 Le 10/11/2021, à 17:16

alex2423

Re : Librairies pour lire/écrire les commentaires IPTC des JPEG de < 150Mo

@ptilou, pour le moment j'utilise Digikam pour mettre des descriptions, titres, tag mais j'aimerai faire un script afin de synchroniser ces informations sur d'autres photo. Je présenterai mon projet un peu plus tard quand il aura justement un peu plus muri wink

kamaris, lorsque je vais déployer mon script Python utilisant py3exiv2 sur un autre poste il faudra que je fasse "pip install py3exiv2". Or pour ne pas avoir d'erreur, je vais de-nouveau avoir besoin d'installer libboost-python-dev.
Comment pourrais je m'y prendre sans installer ces packet *-dev au moment ou je déploierai mon script Python ?

Hors ligne

#5 Le 10/11/2021, à 17:42

iznobe

Re : Librairies pour lire/écrire les commentaires IPTC des JPEG de < 150Mo

Bonsoir , d ' apres la commande utilisé :

kfocal@kfocal:~/Documents/python$ sudo pip3 install py3exiv2

c ' est tout a fait normal que des erreurs apparrraissent !
tu es dans ton /home et tu utilises sudo c ' est une erreur qui fout ton /home en l ' air !

il faut deja reinstaller proprement et te reattribuer les fichiers de ton /home qui ne t ' appartiennent plus .

ca m' etonnerait que dans les liens que tu cites dans ton premier message , pour installer le paquet il ait été fait mention de la commande :

sudo pip3 install xyzxyz

Dans ton message precedent , tu indiques pourtant la bonne commande sans " sudo " :

alex2423 a écrit :

@ptilou, pour le moment j'utilise Digikam pour mettre des descriptions, titres, tag mais j'aimerai faire un script afin de synchroniser ces informations sur d'autres photo. Je présenterai mon projet un peu plus tard quand il aura justement un peu plus muri wink

kamaris, lorsque je vais déployer mon script Python utilisant py3exiv2 sur un autre poste il faudra que je fasse "pip install py3exiv2". Or pour ne pas avoir d'erreur, je vais de-nouveau avoir besoin d'installer libboost-python-dev.
Comment pourrais je m'y prendre sans installer ces packet *-dev au moment ou je déploierai mon script Python ?

Dernière modification par iznobe (Le 10/11/2021, à 19:46)


retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#6 Le 10/11/2021, à 18:13

kamaris

Re : Librairies pour lire/écrire les commentaires IPTC des JPEG de < 150Mo

alex2423 a écrit :

kamaris, lorsque je vais déployer mon script Python utilisant py3exiv2 sur un autre poste il faudra que je fasse "pip install py3exiv2". Or pour ne pas avoir d'erreur, je vais de-nouveau avoir besoin d'installer libboost-python-dev.
Comment pourrais je m'y prendre sans installer ces packet *-dev au moment ou je déploierai mon script Python ?

Si le build est nécessaire, ce qui est probable, tu n'as pas le choix : il faudra installer ces paquets, puis les désinstaller en fin de procédure.

Hors ligne