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 25/02/2021, à 22:39

alex2423

[Python] Packager avec pyinstaller

Hello tout le monde,

Je me suis créé un petit script Python faisant appel à différent module dont bs4 (BeautifullSoup). J'aimerais le déployer sur mon Raspberry, sans devoir recréer un environnement de dev. Ce serait donc pour juste déployer le nécessaire pour faire fonctionner mon script Python et par la suite le lancer en crontab.

J'ai procédé de la manière suivante :
- Création de mon environnement virtuel pour cloisonner les librairies avec ceux de mon système hôte, mon laptop.
- Installation des librairies nécessaires, tel que BeautifullSoup, time, à l'aide pip3
- Puis développement de mon script ...

Mon script fonctionne bien sur mon laptop et j'aimerais bien pouvoir le déployer.

Je me suis installé pyinstaller via pip3 puis je l'ai lancé sur mon fichier Python comme indiqué ci-dessous :

$ /home/kfocal/.local/bin/pyinstaller env/tele7jours.py 
44 INFO: PyInstaller: 4.2
44 INFO: Python: 3.8.5
60 INFO: Platform: Linux-5.4.0-65-generic-x86_64-with-glibc2.29
62 INFO: wrote /home/focal/Documents/python/Kdata/tele7jours.spec
64 INFO: UPX is not available.
67 INFO: Extending PYTHONPATH with paths
['/home/focal/Documents/python/Kdata/env', '/home/focal/Documents/python/Kdata']
73 INFO: checking Analysis
77 INFO: Building because /home/focal/Documents/python/Kdata/env/tele7jours.py changed
78 INFO: Initializing module dependency graph...
79 INFO: Caching module graph hooks...
82 WARNING: Several hooks defined for module 'win32ctypes.core'. Please take care they do not conflict.
84 INFO: Analyzing base_library.zip ...
2136 INFO: Processing pre-find module path hook distutils from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks/pre_find_module_path/hook-distutils.py'.
2136 INFO: distutils: retargeting to non-venv dir '/usr/lib/python3.8'
4990 INFO: Caching module dependency graph...
5096 INFO: running Analysis Analysis-00.toc
5128 INFO: Analyzing /home/focal/Documents/python/Kdata/env/tele7jours.py
5212 INFO: Processing pre-safe import module hook six.moves from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks/pre_safe_import_module/hook-six.moves.py'.
7033 INFO: Processing module hooks...
7034 INFO: Loading module hook 'hook-certifi.py' from '/home/kfocal/.local/lib/python3.8/site-packages/_pyinstaller_hooks_contrib/hooks/stdhooks'...
7038 INFO: Loading module hook 'hook-cryptography.py' from '/home/kfocal/.local/lib/python3.8/site-packages/_pyinstaller_hooks_contrib/hooks/stdhooks'...
7234 INFO: Loading module hook 'hook-distutils.util.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7236 INFO: Excluding import of lib2to3.refactor from module distutils.util
7236 INFO: Loading module hook 'hook-distutils.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7238 INFO: Loading module hook 'hook-multiprocessing.util.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7239 INFO: Excluding import of test from module multiprocessing.util
7239 INFO: Excluding import of test.support from module multiprocessing.util
7239 INFO: Loading module hook 'hook-xml.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7300 INFO: Loading module hook 'hook-lib2to3.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7309 INFO: Loading module hook 'hook-sysconfig.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7319 INFO: Loading module hook 'hook-difflib.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7322 INFO: Excluding import of doctest from module difflib
7322 INFO: Loading module hook 'hook-pickle.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7325 INFO: Excluding import of argparse from module pickle
7325 INFO: Loading module hook 'hook-heapq.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7328 INFO: Excluding import of doctest from module heapq
7328 INFO: Loading module hook 'hook-encodings.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7377 INFO: Loading module hook 'hook-xml.etree.cElementTree.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
7391 INFO: Looking for ctypes DLLs
7418 INFO: Analyzing run-time hooks ...
7423 INFO: Including run-time hook '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks/rthooks/pyi_rth_multiprocessing.py'
7430 INFO: Including run-time hook '/home/kfocal/.local/lib/python3.8/site-packages/_pyinstaller_hooks_contrib/hooks/rthooks/pyi_rth_certifi.py'
7441 INFO: Looking for dynamic libraries
7800 INFO: Looking for eggs
7801 INFO: Python library not in binary dependencies. Doing additional searching...
7855 INFO: Using Python library /lib/x86_64-linux-gnu/libpython3.8.so.1.0
7861 INFO: Warnings written to /home/focal/Documents/python/Kdata/build/tele7jours/warn-tele7jours.txt
7919 INFO: Graph cross-reference written to /home/focal/Documents/python/Kdata/build/tele7jours/xref-tele7jours.html
7927 INFO: checking PYZ
7932 INFO: Building because toc changed
7932 INFO: Building PYZ (ZlibArchive) /home/focal/Documents/python/Kdata/build/tele7jours/PYZ-00.pyz
8458 INFO: Building PYZ (ZlibArchive) /home/focal/Documents/python/Kdata/build/tele7jours/PYZ-00.pyz completed successfully.
8465 INFO: checking PKG
8467 INFO: Building because toc changed
8467 INFO: Building PKG (CArchive) PKG-00.pkg
8520 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
8521 INFO: Bootloader /home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/bootloader/Linux-64bit/run
8522 INFO: checking EXE
8523 INFO: Rebuilding EXE-00.toc because tele7jours missing
8523 INFO: Building EXE from EXE-00.toc
8523 INFO: Appending archive to ELF section in EXE /home/focal/Documents/python/Kdata/build/tele7jours/tele7jours
8535 INFO: Building EXE from EXE-00.toc completed successfully.
8536 INFO: checking COLLECT
8536 INFO: Building COLLECT because COLLECT-00.toc is non existent
8538 INFO: Building COLLECT COLLECT-00.toc
8558 INFO: Building COLLECT COLLECT-00.toc completed successfully.

Un répertoire dist et build a été créé. Celui qui nous intéresse est normalement "dist" pour "distribuer"
Je le lance pour tester et il me ressort qu'il me manque le module bs4

(env) kfocal@kfocal:~/Documents/python/Kdata$ ./dist/tele7jours/tele7jours 
Traceback (most recent call last):
  File "tele7jours.py", line 1, in <module>
ModuleNotFoundError: No module named 'bs4'
[62546] Failed to execute script tele7jours

La librairie était bien dans mon environnement "env"

(env) kfocal@kfocal:~/Documents/python/Kdata$ ls -l env/lib/python3.8/site-packages/ | grep bs4
drwxrwxr-x  5 kfocal kfocal   4096 févr. 19 18:20 bs4
drwxrwxr-x  2 kfocal kfocal   4096 févr. 19 18:20 bs4-0.0.1.egg-info

Et en effet à après vérification, la librairie bs4 ne se trouve pas dans le répertoire dist

(env) kfocal@kfocal:~/Documents/python/Kdata$ ls -l dist/tele7jours/lib/python3.8/config-3.8-x86_64-linux-gnu/
total 88 
-rw-r--r-- 1 kfocal kfocal 88024 juil. 28  2020 Makefile
(env) kfocal@kfocal:~/Documents/python/Kdata$ find dist -name "*bs4*"

J'ai du mal à comprendre d'avoir ce genre d'erreur. Ce script est prévu pour de la distribution. S'il ne copie pas les intéret les librairies nécessaires, quel est l'intérêt de l'outil.
AI je raté quelque chose ? dans la commande de pyinstaller ?

Dernière modification par alex2423 (Le 26/02/2021, à 18:02)

Hors ligne

#2 Le 26/02/2021, à 13:30

Vobul

Re : [Python] Packager avec pyinstaller

Regarde en mode debug pour voir ce qui cloche : https://pyinstaller.readthedocs.io/en/s … wrong.html

Sinon perso je suis assez fan de Pipenv pour faire les envs. Pyinstaller c'est surtout utile si tu veux faire un executable redistribuable, mais ça ne semble pas être le cas, donc Pipenv ou Poetry sont de bonnes options.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 26/02/2021, à 13:50

beuguissime

Re : [Python] Packager avec pyinstaller

Salut,

(le gras est de moi)

Vobul a écrit :

Sinon perso je suis assez fan de Pipenv pour faire les envs. Pyinstaller c'est surtout utile si tu veux faire un executable redistribuable, mais ça ne semble pas être le cas

Je pense que si :

alex2423 a écrit :

Sauf erreur de ma part, l'intéret est de pouvoir copier son script sans devoir faire des pip3 install sur ses machines de destinations.

As-tu essayé avec cette option (je n'y crois pas trop mais bon) :

--hidden-import=bs4

aussi pour avoir un seul fichier, considère cette option

--onefile

Hors ligne

#4 Le 26/02/2021, à 20:02

alex2423

Re : [Python] Packager avec pyinstaller

Salut,

désolé mon post en effet n'était pas très clair. Je l'ai édité 
Ce que je souhaiterai, c'est ne pas réinstaller un environnement de dev sur ma machine de destination. J'aimerais éviter inutilement d'installer toutes la panoplie d'outils.

Mon but, c'est je développe mes scripts Python sur mon laptop avec pyCharm et je pousse ensuite sur mon Raspberry. Mon Raspberry n'ayant pas d'interface graphique, je ne compte pas développer dessus directement. Après ce posera le problème de l'architecture (x86 pour mon laptop, et ARM pour mon RPI), mais c'est un autre problème ....

Et mon autre argument de vouloir packager (script + lib) ce serait le côté instructif. C'est quand même sympa, de dev un script et ensuite de le déployer rapidement smile


La doc officielle confirme bien que Pyinstaller va chercher automatiquement les modules en scannant les différents import dans notre code perso Python.

Doc officielle a écrit :

What other modules and libraries does your script need in order to run? (These are sometimes called its “dependencies”.)
To find out, PyInstaller finds all the import statements in your script. It finds the imported modules and looks in them for import statements, and so on recursively, until it has a complete list of modules your script may use.

Et il semblerait en plus que dans la plus part des cas, il y juste besoin d'appel  pyinstaller script.pyc: 

Doc officielle a écrit :

The most simple case, set the current directory to the location of your program myscript.py and execute:
pyinstaller myscript.py

Sachant que je fais est un bête script tout simple avec quelques librairies. Rien de bien spécifique

Bref total incompréhension ...

J'ai essayer le mode DEBUG mais rien de probant

kfocal@kfocal:~/Documents/python/Kdata/env$ /home/kfocal/.local/bin/pyinstaller --noconfirm --nowindow --log-level DEBUG --onefile podcast_apple.py       
32 INFO: PyInstaller: 4.2
32 INFO: Python: 3.8.5
43 INFO: Platform: Linux-5.4.0-65-generic-x86_64-with-glibc2.29
43 INFO: wrote /home/focal/Documents/python/Kdata/env/podcast_apple.spec
44 DEBUG: Testing for UPX ...
47 INFO: UPX is not available.
48 DEBUG: script: /home/focal/Documents/python/Kdata/env/podcast_apple.py
48 INFO: Extending PYTHONPATH with paths
['/home/focal/Documents/python/Kdata/env',
 '/home/focal/Documents/python/Kdata/env']
53 INFO: checking Analysis
53 INFO: Building Analysis because Analysis-00.toc is non existent
53 INFO: Initializing module dependency graph...
54 INFO: Caching module graph hooks...
56 WARNING: Several hooks defined for module 'win32ctypes.core'. Please take care they do not conflict.
58 INFO: Analyzing base_library.zip ...
58 DEBUG: Collecting submodules for collections
91 DEBUG: collect_submodules - Found submodules: {'collections', 'collections.abc'}
91 DEBUG: Collecting submodules for encodings
130 DEBUG: collect_submodules - Found submodules: {'encodings.mac_turkish', 'encodings.cp861', 'encodings.iso2022_jp_ext', 'encodings.iso8859_6', 'encodings.iso8859_10', 'encodings.aliases', 'encodings.gb2312', 'encodings.big5', 'encodings.iso2022_jp', 'encodings.cp737', 'encodings.cp1026', 'encodings.mac_arabic', 'encodings.iso8859_4', 'encodings.iso8859_5', 'encodings.euc_jis_2004', 'encodings.punycode', 'encodings.cp866', 'encodings.hex_codec', 'encodings.bz2_codec', 'encodings.shift_jis_2004', 'encodings.cp424', 'encodings.cp852', 'encodings.iso8859_1', 'encodings.uu_codec', 'encodings.cp858', 'encodings.cp1257', 'encodings.koi8_u', 'encodings.cp856', 'encodings.johab', 'encodings.cp1258', 'encodings.utf_16_be', 'encodings.cp855', 'encodings.utf_7', 'encodings.cp865', 'encodings.cp1006', 'encodings.iso8859_7', 'encodings.mac_greek', 'encodings.cp1256', 'encodings.cp857', 'encodings.hz', 'encodings.latin_1', 'encodings.shift_jisx0213', 'encodings.cp869', 'encodings.cp1253', 'encodings.iso8859_13', 'encodings.koi8_t', 'encodings.mac_croatian', 'encodings.hp_roman8', 'encodings.gb18030', 'encodings.kz1048', 'encodings.utf_8_sig', 'encodings.quopri_codec', 'encodings.cp860', 'encodings.cp1140', 'encodings.cp862', 'encodings.utf_32', 'encodings.idna', 'encodings.cp850', 'encodings.cp863', 'encodings.rot_13', 'encodings.base64_codec', 'encodings.cp037', 'encodings.iso8859_9', 'encodings.cp874', 'encodings.cp1254', 'encodings.utf_32_be', 'encodings.cp932', 'encodings.cp949', 'encodings.cp273', 'encodings.euc_kr', 'encodings.mac_iceland', 'encodings.iso2022_jp_2004', 'encodings.palmos', 'encodings.mac_romanian', 'encodings.big5hkscs', 'encodings.charmap', 'encodings.cp500', 'encodings.gbk', 'encodings.iso8859_11', 'encodings.mac_latin2', 'encodings.cp950', 'encodings.cp864', 'encodings.iso8859_3', 'encodings.mac_farsi', 'encodings.iso2022_jp_3', 'encodings.cp1125', 'encodings.euc_jisx0213', 'encodings.cp875', 'encodings.iso2022_jp_1', 'encodings.ascii', 'encodings.cp775', 'encodings.unicode_escape', 'encodings.cp1255', 'encodings.iso2022_kr', 'encodings.mac_cyrillic', 'encodings.iso8859_2', 'encodings.iso8859_15', 'encodings.euc_jp', 'encodings.utf_16', 'encodings.cp1250', 'encodings.oem', 'encodings.shift_jis', 'encodings.mbcs', 'encodings.raw_unicode_escape', 'encodings.cp437', 'encodings.utf_16_le', 'encodings.ptcp154', 'encodings.undefined', 'encodings.cp1252', 'encodings.zlib_codec', 'encodings.cp1251', 'encodings.iso8859_16', 'encodings.mac_roman', 'encodings.tis_620', 'encodings.koi8_r', 'encodings', 'encodings.iso8859_14', 'encodings.iso8859_8', 'encodings.utf_32_le', 'encodings.iso2022_jp_2', 'encodings.mac_centeuro', 'encodings.utf_8', 'encodings.cp720'}
2090 INFO: Processing pre-find module path hook distutils from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks/pre_find_module_path/hook-distutils.py'.
2090 INFO: distutils: retargeting to non-venv dir '/usr/lib/python3.8'
4003 INFO: Caching module dependency graph...
4064 DEBUG: Adding python files to base_library.zip
4087 INFO: running Analysis Analysis-00.toc
4087 DEBUG: Analyzing /usr/bin/python3.8
4101 DEBUG: Skipping libutil.so.1 dependency of python3.8
4101 DEBUG: Skipping libpthread.so.0 dependency of python3.8
4101 DEBUG: Adding libexpat.so.1 dependency of python3.8 from /lib/x86_64-linux-gnu/libexpat.so.1
4101 DEBUG: Adding libz.so.1 dependency of python3.8 from /lib/x86_64-linux-gnu/libz.so.1
4101 DEBUG: Skipping libc.so.6 dependency of python3.8
4101 DEBUG: Skipping libm.so.6 dependency of python3.8
4101 DEBUG: Skipping libdl.so.2 dependency of python3.8
4101 DEBUG: Analyzing /lib/x86_64-linux-gnu/libexpat.so.1
4109 DEBUG: Skipping libc.so.6 dependency of libexpat.so.1
4109 DEBUG: Analyzing /lib/x86_64-linux-gnu/libz.so.1
4118 DEBUG: Skipping libc.so.6 dependency of libz.so.1
4118 INFO: Analyzing /home/focal/Documents/python/Kdata/env/podcast_apple.py
4193 INFO: Processing pre-safe import module hook six.moves from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks/pre_safe_import_module/hook-six.moves.py'.
5697 DEBUG: Hidden import 'codecs' already found
5697 INFO: Processing module hooks...
5698 INFO: Loading module hook 'hook-certifi.py' from '/home/kfocal/.local/lib/python3.8/site-packages/_pyinstaller_hooks_contrib/hooks/stdhooks'...
5698 DEBUG: Collecting data files for certifi
5700 DEBUG: collect_data_files - Found files: [('/usr/lib/python3/dist-packages/certifi/cacert.pem', 'certifi')]
5700 INFO: Loading module hook 'hook-cryptography.py' from '/home/kfocal/.local/lib/python3.8/site-packages/_pyinstaller_hooks_contrib/hooks/stdhooks'...
5701 DEBUG: Package cryptography metadata found in /usr/lib/python3/dist-packages/cryptography-2.8.egg-info belongs in cryptography-2.8-py3.8.egg-info
5701 DEBUG: Collecting submodules for cryptography.hazmat.backends
5801 DEBUG: collect_submodules - Found submodules: {'cryptography.hazmat.backends.openssl', 'cryptography.hazmat.backends.openssl.ocsp', 'cryptography.hazmat.backends.openssl.dh', 'cryptography.hazmat.backends.openssl.cmac', 'cryptography.hazmat.backends.openssl.decode_asn1', 'cryptography.hazmat.backends.openssl.backend', 'cryptography.hazmat.backends', 'cryptography.hazmat.backends.openssl.x25519', 'cryptography.hazmat.backends.openssl.rsa', 'cryptography.hazmat.backends.openssl.utils', 'cryptography.hazmat.backends.openssl.dsa', 'cryptography.hazmat.backends.openssl.hashes', 'cryptography.hazmat.backends.openssl.ed25519', 'cryptography.hazmat.backends.openssl.aead', 'cryptography.hazmat.backends.interfaces', 'cryptography.hazmat.backends.openssl.encode_asn1', 'cryptography.hazmat.backends.openssl.ec', 'cryptography.hazmat.backends.openssl.x509', 'cryptography.hazmat.backends.openssl.ed448', 'cryptography.hazmat.backends.openssl.ciphers', 'cryptography.hazmat.backends.openssl.hmac', 'cryptography.hazmat.backends.openssl.x448', 'cryptography.hazmat.backends.openssl.poly1305'}
5802 DEBUG: Collecting submodules for cryptography.hazmat.bindings.openssl
5848 DEBUG: collect_submodules - Found submodules: {'cryptography.hazmat.bindings.openssl._conditional', 'cryptography.hazmat.bindings.openssl.binding', 'cryptography.hazmat.bindings.openssl'}
5853 INFO: Loading module hook 'hook-distutils.util.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5855 INFO: Excluding import of lib2to3.refactor from module distutils.util
5855 INFO: Loading module hook 'hook-distutils.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5856 INFO: Loading module hook 'hook-multiprocessing.util.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5858 INFO: Excluding import of test.support from module multiprocessing.util
5858 INFO: Excluding import of test from module multiprocessing.util
5858 INFO: Loading module hook 'hook-xml.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5906 INFO: Loading module hook 'hook-lib2to3.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5906 DEBUG: Collecting data files for lib2to3
5914 DEBUG: collect_data_files - Found files: [('/usr/lib/python3.8/lib2to3/Grammar.txt', 'lib2to3'), ('/usr/lib/python3.8/lib2to3/PatternGrammar.txt', 'lib2to3')]
5915 INFO: Loading module hook 'hook-sysconfig.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5921 INFO: Loading module hook 'hook-difflib.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5922 INFO: Excluding import of doctest from module difflib
5922 INFO: Loading module hook 'hook-pickle.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5923 INFO: Excluding import of argparse from module pickle
5923 INFO: Loading module hook 'hook-heapq.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5924 INFO: Excluding import of doctest from module heapq
5924 INFO: Loading module hook 'hook-encodings.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5925 DEBUG: Collecting submodules for encodings
5962 DEBUG: collect_submodules - Found submodules: {'encodings.mac_turkish', 'encodings.cp861', 'encodings.iso2022_jp_ext', 'encodings.iso8859_6', 'encodings.iso8859_10', 'encodings.aliases', 'encodings.gb2312', 'encodings.big5', 'encodings.iso2022_jp', 'encodings.cp737', 'encodings.cp1026', 'encodings.mac_arabic', 'encodings.iso8859_4', 'encodings.iso8859_5', 'encodings.euc_jis_2004', 'encodings.punycode', 'encodings.cp866', 'encodings.hex_codec', 'encodings.bz2_codec', 'encodings.shift_jis_2004', 'encodings.cp424', 'encodings.cp852', 'encodings.iso8859_1', 'encodings.uu_codec', 'encodings.cp858', 'encodings.cp1257', 'encodings.koi8_u', 'encodings.cp856', 'encodings.johab', 'encodings.cp1258', 'encodings.utf_16_be', 'encodings.cp855', 'encodings.utf_7', 'encodings.cp865', 'encodings.cp1006', 'encodings.iso8859_7', 'encodings.mac_greek', 'encodings.cp1256', 'encodings.cp857', 'encodings.hz', 'encodings.latin_1', 'encodings.shift_jisx0213', 'encodings.cp869', 'encodings.cp1253', 'encodings.iso8859_13', 'encodings.koi8_t', 'encodings.mac_croatian', 'encodings.hp_roman8', 'encodings.gb18030', 'encodings.kz1048', 'encodings.utf_8_sig', 'encodings.quopri_codec', 'encodings.cp860', 'encodings.cp1140', 'encodings.cp862', 'encodings.utf_32', 'encodings.idna', 'encodings.cp850', 'encodings.cp863', 'encodings.rot_13', 'encodings.base64_codec', 'encodings.cp037', 'encodings.iso8859_9', 'encodings.cp874', 'encodings.cp1254', 'encodings.utf_32_be', 'encodings.cp932', 'encodings.cp949', 'encodings.cp273', 'encodings.euc_kr', 'encodings.mac_iceland', 'encodings.iso2022_jp_2004', 'encodings.palmos', 'encodings.mac_romanian', 'encodings.big5hkscs', 'encodings.charmap', 'encodings.cp500', 'encodings.gbk', 'encodings.iso8859_11', 'encodings.mac_latin2', 'encodings.cp950', 'encodings.cp864', 'encodings.iso8859_3', 'encodings.mac_farsi', 'encodings.iso2022_jp_3', 'encodings.cp1125', 'encodings.euc_jisx0213', 'encodings.cp875', 'encodings.iso2022_jp_1', 'encodings.ascii', 'encodings.cp775', 'encodings.unicode_escape', 'encodings.cp1255', 'encodings.iso2022_kr', 'encodings.mac_cyrillic', 'encodings.iso8859_2', 'encodings.iso8859_15', 'encodings.euc_jp', 'encodings.utf_16', 'encodings.cp1250', 'encodings.oem', 'encodings.shift_jis', 'encodings.mbcs', 'encodings.raw_unicode_escape', 'encodings.cp437', 'encodings.utf_16_le', 'encodings.ptcp154', 'encodings.undefined', 'encodings.cp1252', 'encodings.zlib_codec', 'encodings.cp1251', 'encodings.iso8859_16', 'encodings.mac_roman', 'encodings.tis_620', 'encodings.koi8_r', 'encodings', 'encodings.iso8859_14', 'encodings.iso8859_8', 'encodings.utf_32_le', 'encodings.iso2022_jp_2', 'encodings.mac_centeuro', 'encodings.utf_8', 'encodings.cp720'}
5966 INFO: Loading module hook 'hook-xml.etree.cElementTree.py' from '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks'...
5976 DEBUG: Looking for egg data files...
5976 INFO: Looking for ctypes DLLs
5977 DEBUG: Scanning test.support for shared libraries or dlls
6005 DEBUG: Scanning multiprocessing.sharedctypes for shared libraries or dlls
6008 INFO: Analyzing run-time hooks ...
6012 INFO: Including run-time hook '/home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks/rthooks/pyi_rth_multiprocessing.py'
6014 INFO: Including run-time hook '/home/kfocal/.local/lib/python3.8/site-packages/_pyinstaller_hooks_contrib/hooks/rthooks/pyi_rth_certifi.py'
6020 INFO: Looking for dynamic libraries
6021 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_asyncio.cpython-38-x86_64-linux-gnu.so
6030 DEBUG: Skipping libc.so.6 dependency of _asyncio.cpython-38-x86_64-linux-gnu.so
6030 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_contextvars.cpython-38-x86_64-linux-gnu.so
6043 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_queue.cpython-38-x86_64-linux-gnu.so
6051 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/mmap.cpython-38-x86_64-linux-gnu.so
6059 DEBUG: Skipping libpthread.so.0 dependency of mmap.cpython-38-x86_64-linux-gnu.so
6059 DEBUG: Skipping libc.so.6 dependency of mmap.cpython-38-x86_64-linux-gnu.so
6059 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_posixshmem.cpython-38-x86_64-linux-gnu.so
6068 DEBUG: Skipping librt.so.1 dependency of _posixshmem.cpython-38-x86_64-linux-gnu.so
6068 DEBUG: Skipping libc.so.6 dependency of _posixshmem.cpython-38-x86_64-linux-gnu.so
6068 DEBUG: Skipping libpthread.so.0 dependency of _posixshmem.cpython-38-x86_64-linux-gnu.so
6068 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_ctypes.cpython-38-x86_64-linux-gnu.so
6083 DEBUG: Skipping libpthread.so.0 dependency of _ctypes.cpython-38-x86_64-linux-gnu.so
6084 DEBUG: Skipping libc.so.6 dependency of _ctypes.cpython-38-x86_64-linux-gnu.so
6084 DEBUG: Adding libffi.so.7 dependency of _ctypes.cpython-38-x86_64-linux-gnu.so from /lib/x86_64-linux-gnu/libffi.so.7
6084 DEBUG: Skipping libdl.so.2 dependency of _ctypes.cpython-38-x86_64-linux-gnu.so
6084 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_multiprocessing.cpython-38-x86_64-linux-gnu.so
6098 DEBUG: Skipping libpthread.so.0 dependency of _multiprocessing.cpython-38-x86_64-linux-gnu.so
6098 DEBUG: Skipping libc.so.6 dependency of _multiprocessing.cpython-38-x86_64-linux-gnu.so
6098 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/termios.cpython-38-x86_64-linux-gnu.so
6109 DEBUG: Skipping libpthread.so.0 dependency of termios.cpython-38-x86_64-linux-gnu.so
6109 DEBUG: Skipping libc.so.6 dependency of termios.cpython-38-x86_64-linux-gnu.so
6109 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_decimal.cpython-38-x86_64-linux-gnu.so
6118 DEBUG: Skipping libpthread.so.0 dependency of _decimal.cpython-38-x86_64-linux-gnu.so
6118 DEBUG: Adding libmpdec.so.2 dependency of _decimal.cpython-38-x86_64-linux-gnu.so from /lib/x86_64-linux-gnu/libmpdec.so.2
6118 DEBUG: Skipping libm.so.6 dependency of _decimal.cpython-38-x86_64-linux-gnu.so
6118 DEBUG: Skipping libc.so.6 dependency of _decimal.cpython-38-x86_64-linux-gnu.so
6119 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/readline.cpython-38-x86_64-linux-gnu.so
6135 DEBUG: Skipping libpthread.so.0 dependency of readline.cpython-38-x86_64-linux-gnu.so
6135 DEBUG: Adding libtinfo.so.6 dependency of readline.cpython-38-x86_64-linux-gnu.so from /lib/x86_64-linux-gnu/libtinfo.so.6
6135 DEBUG: Skipping libc.so.6 dependency of readline.cpython-38-x86_64-linux-gnu.so
6135 DEBUG: Adding libreadline.so.8 dependency of readline.cpython-38-x86_64-linux-gnu.so from /lib/x86_64-linux-gnu/libreadline.so.8
6135 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_opcode.cpython-38-x86_64-linux-gnu.so
6145 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_hashlib.cpython-38-x86_64-linux-gnu.so
6154 DEBUG: Skipping libpthread.so.0 dependency of _hashlib.cpython-38-x86_64-linux-gnu.so
6155 DEBUG: Adding libcrypto.so.1.1 dependency of _hashlib.cpython-38-x86_64-linux-gnu.so from /lib/x86_64-linux-gnu/libcrypto.so.1.1
6155 DEBUG: Skipping libc.so.6 dependency of _hashlib.cpython-38-x86_64-linux-gnu.so
6155 DEBUG: Skipping libdl.so.2 dependency of _hashlib.cpython-38-x86_64-linux-gnu.so
6155 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/resource.cpython-38-x86_64-linux-gnu.so
6170 DEBUG: Skipping libpthread.so.0 dependency of resource.cpython-38-x86_64-linux-gnu.so
6171 DEBUG: Skipping libc.so.6 dependency of resource.cpython-38-x86_64-linux-gnu.so
6171 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_lzma.cpython-38-x86_64-linux-gnu.so
6182 DEBUG: Skipping libpthread.so.0 dependency of _lzma.cpython-38-x86_64-linux-gnu.so
6182 DEBUG: Skipping libc.so.6 dependency of _lzma.cpython-38-x86_64-linux-gnu.so
6182 DEBUG: Adding liblzma.so.5 dependency of _lzma.cpython-38-x86_64-linux-gnu.so from /lib/x86_64-linux-gnu/liblzma.so.5
6182 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_bz2.cpython-38-x86_64-linux-gnu.so
6191 DEBUG: Skipping libc.so.6 dependency of _bz2.cpython-38-x86_64-linux-gnu.so
6191 DEBUG: Adding libbz2.so.1.0 dependency of _bz2.cpython-38-x86_64-linux-gnu.so from /lib/x86_64-linux-gnu/libbz2.so.1.0
6191 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_ssl.cpython-38-x86_64-linux-gnu.so
6201 DEBUG: Adding libssl.so.1.1 dependency of _ssl.cpython-38-x86_64-linux-gnu.so from /lib/x86_64-linux-gnu/libssl.so.1.1
6201 DEBUG: Skipping libpthread.so.0 dependency of _ssl.cpython-38-x86_64-linux-gnu.so
6201 DEBUG: Skipping libc.so.6 dependency of _ssl.cpython-38-x86_64-linux-gnu.so
6201 DEBUG: Skipping libdl.so.2 dependency of _ssl.cpython-38-x86_64-linux-gnu.so
6201 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_multibytecodec.cpython-38-x86_64-linux-gnu.so
6211 DEBUG: Skipping libc.so.6 dependency of _multibytecodec.cpython-38-x86_64-linux-gnu.so
6212 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_codecs_iso2022.cpython-38-x86_64-linux-gnu.so
6223 DEBUG: Skipping libc.so.6 dependency of _codecs_iso2022.cpython-38-x86_64-linux-gnu.so
6223 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_codecs_jp.cpython-38-x86_64-linux-gnu.so
6231 DEBUG: Skipping libc.so.6 dependency of _codecs_jp.cpython-38-x86_64-linux-gnu.so
6231 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_codecs_tw.cpython-38-x86_64-linux-gnu.so
6241 DEBUG: Skipping libc.so.6 dependency of _codecs_tw.cpython-38-x86_64-linux-gnu.so
6241 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_codecs_cn.cpython-38-x86_64-linux-gnu.so
6256 DEBUG: Skipping libc.so.6 dependency of _codecs_cn.cpython-38-x86_64-linux-gnu.so
6257 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_codecs_hk.cpython-38-x86_64-linux-gnu.so
6269 DEBUG: Skipping libc.so.6 dependency of _codecs_hk.cpython-38-x86_64-linux-gnu.so
6269 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_codecs_kr.cpython-38-x86_64-linux-gnu.so
6277 DEBUG: Skipping libc.so.6 dependency of _codecs_kr.cpython-38-x86_64-linux-gnu.so
6278 DEBUG: Analyzing /usr/lib/python3.8/lib-dynload/_json.cpython-38-x86_64-linux-gnu.so
6287 DEBUG: Analyzing /usr/lib/python3/dist-packages/simplejson/_speedups.cpython-38-x86_64-linux-gnu.so
6300 DEBUG: Skipping libc.so.6 dependency of _speedups.cpython-38-x86_64-linux-gnu.so
6300 DEBUG: Analyzing /usr/lib/python3/dist-packages/_cffi_backend.cpython-38-x86_64-linux-gnu.so
6316 DEBUG: Skipping libpthread.so.0 dependency of _cffi_backend.cpython-38-x86_64-linux-gnu.so
6316 DEBUG: Skipping libc.so.6 dependency of _cffi_backend.cpython-38-x86_64-linux-gnu.so
6316 DEBUG: Analyzing /usr/lib/python3/dist-packages/cryptography/hazmat/bindings/_openssl.abi3.so
6324 DEBUG: Skipping libpthread.so.0 dependency of _openssl.abi3.so
6325 DEBUG: Skipping libc.so.6 dependency of _openssl.abi3.so
6325 DEBUG: Skipping libdl.so.2 dependency of _openssl.abi3.so
6325 DEBUG: Analyzing /usr/lib/python3/dist-packages/cryptography/hazmat/bindings/_constant_time.abi3.so
6333 DEBUG: Skipping libc.so.6 dependency of _constant_time.abi3.so
6333 DEBUG: Analyzing /lib/x86_64-linux-gnu/libffi.so.7
6343 DEBUG: Skipping libc.so.6 dependency of libffi.so.7
6344 DEBUG: Analyzing /lib/x86_64-linux-gnu/libmpdec.so.2
6360 DEBUG: Skipping libm.so.6 dependency of libmpdec.so.2
6361 DEBUG: Skipping libc.so.6 dependency of libmpdec.so.2
6361 DEBUG: Analyzing /lib/x86_64-linux-gnu/libtinfo.so.6
6372 DEBUG: Skipping libc.so.6 dependency of libtinfo.so.6
6372 DEBUG: Analyzing /lib/x86_64-linux-gnu/libreadline.so.8
6381 DEBUG: Skipping libc.so.6 dependency of libreadline.so.8
6381 DEBUG: Analyzing /lib/x86_64-linux-gnu/libcrypto.so.1.1
6389 DEBUG: Skipping libpthread.so.0 dependency of libcrypto.so.1.1
6389 DEBUG: Skipping libc.so.6 dependency of libcrypto.so.1.1
6389 DEBUG: Skipping libdl.so.2 dependency of libcrypto.so.1.1
6389 DEBUG: Analyzing /lib/x86_64-linux-gnu/liblzma.so.5
6400 DEBUG: Skipping libpthread.so.0 dependency of liblzma.so.5
6400 DEBUG: Skipping libc.so.6 dependency of liblzma.so.5
6400 DEBUG: Analyzing /lib/x86_64-linux-gnu/libbz2.so.1.0
6422 DEBUG: Skipping libc.so.6 dependency of libbz2.so.1.0
6422 DEBUG: Analyzing /lib/x86_64-linux-gnu/libssl.so.1.1
6435 DEBUG: Skipping libpthread.so.0 dependency of libssl.so.1.1
6435 DEBUG: Skipping libc.so.6 dependency of libssl.so.1.1
6435 DEBUG: Skipping libdl.so.2 dependency of libssl.so.1.1
6435 INFO: Looking for eggs
6435 INFO: Python library not in binary dependencies. Doing additional searching...
6476 DEBUG: Adding Python library to binary dependencies
6476 INFO: Using Python library /lib/x86_64-linux-gnu/libpython3.8.so.1.0
6483 INFO: Warnings written to /home/focal/Documents/python/Kdata/env/build/podcast_apple/warn-podcast_apple.txt
6513 INFO: Graph cross-reference written to /home/focal/Documents/python/Kdata/env/build/podcast_apple/xref-podcast_apple.html
6537 INFO: Graph drawing written to /home/focal/Documents/python/Kdata/env/build/podcast_apple/graph-podcast_apple.dot
6544 DEBUG: compiled /usr/lib/python3.8/struct.py
6544 INFO: checking PYZ
6544 INFO: Building PYZ because PYZ-00.toc is non existent
6545 INFO: Building PYZ (ZlibArchive) /home/focal/Documents/python/Kdata/env/build/podcast_apple/PYZ-00.pyz
7015 INFO: Building PYZ (ZlibArchive) /home/focal/Documents/python/Kdata/env/build/podcast_apple/PYZ-00.pyz completed successfully.
7020 INFO: checking PKG
7020 INFO: Building PKG because PKG-00.toc is non existent
7020 INFO: Building PKG (CArchive) PKG-00.pkg
7045 DEBUG: Compiling /home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/loader/pyiboot01_bootstrap.py
7045 DEBUG: Compiling /home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/loader/pyiboot01_bootstrap.py
7045 DEBUG: Compiling /home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks/rthooks/pyi_rth_multiprocessing.py
7046 DEBUG: Compiling /home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/hooks/rthooks/pyi_rth_multiprocessing.py
7046 DEBUG: Compiling /home/kfocal/.local/lib/python3.8/site-packages/_pyinstaller_hooks_contrib/hooks/rthooks/pyi_rth_certifi.py
7046 DEBUG: Compiling /home/kfocal/.local/lib/python3.8/site-packages/_pyinstaller_hooks_contrib/hooks/rthooks/pyi_rth_certifi.py
7046 DEBUG: Compiling /home/focal/Documents/python/Kdata/env/podcast_apple.py
7047 DEBUG: Compiling /home/focal/Documents/python/Kdata/env/podcast_apple.py
9816 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
9818 INFO: Bootloader /home/kfocal/.local/lib/python3.8/site-packages/PyInstaller/bootloader/Linux-64bit/run
9818 INFO: checking EXE
9818 INFO: Building EXE because EXE-00.toc is non existent
9818 INFO: Building EXE from EXE-00.toc
9818 INFO: Appending archive to ELF section in EXE /home/focal/Documents/python/Kdata/env/dist/podcast_apple
9851 DEBUG: objcopy returned 0
9852 INFO: Building EXE from EXE-00.toc completed successfully.
kfocal@kfocal:~/Documents/python/Kdata/env$ /./home/focal/Documents/python/Kdata/env/dist/podcast_apple
Traceback (most recent call last):
  File "podcast_apple.py", line 1, in <module>
    import bs4
ModuleNotFoundError: No module named 'bs4'
[79360] Failed to execute script podcast_apple

Dernière modification par alex2423 (Le 26/02/2021, à 20:07)

Hors ligne

#5 Le 26/02/2021, à 21:23

beuguissime

Re : [Python] Packager avec pyinstaller

Remarque : Au passage, ça tue le principe et l'avantage d'une bibliothèque de modules : chaque script vient seul et pioche les modules nécessaires sur le système. Hier, en jouant un peu avec pyinstaller, un script de cinq lignes est devenu, après passage à la moulinette pyinstaller, un fichier de 18 Mo.
Sur ton raspberry, tu dois avoir une debian ou autre distrib. linux, non ? Il te suffit d'un apt install (ou commande équivalente) pour installer les paquets python manquants. Pourquoi ne fais-tu pas ainsi ? Avec les infos que tu donnes, j'ai du mal à voir le gain à passer par pyinstaller.

Hors ligne

#6 Le 26/02/2021, à 23:22

alex2423

Re : [Python] Packager avec pyinstaller

Après réflexion, tu as peut être raison.
Je suis justement plutôt partisan du deb plutôt que du snap permettant certe de faciliter la vie du développeur mais alourdit bêtement le poid des applis. Et vouloir packager son script Pythonu  même revient au même principe. Ne pas mutualiser les libriaires du système.

En tant que débutant, après avoir fait mon script, je voulais faire quelque chose de "propre" pour mon apprentissage. ,
Je vais plutot dans ce cas me rabattre sur l'utilisation d'un fichier requirements (pip freeze > requirements) regroupant l'ensemble des dépendances.

Hors ligne