#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
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 " :
@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
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
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