4 votes

Compiler un script Python avec Pyinstaller via le terminal

Je suis en train d'utiliser macOS et Anaconda 3 pour gérer mes bibliothèques et écrire le script.

Je veux créer un exécutable pour mon script.

Je suis en train d'utiliser Pyinstaller dans Terminal pour exécuter la commande:

pyinstaller --onefile /Répertoire/fichier.py

Cependant, Terminal retourne cette erreur:

File "/anaconda3/lib/python3.6/site-packages/PyInstaller/hooks/hook-sysconfig.py", ligne 42, dans hiddenimports = [sysconfig._get_sysconfigdata_name()] TypeError: _get_sysconfigdata_name() nécessite un argument positionnel requis: 'check_exists'

Comment puis-je résoudre ce problème; merci pour votre aide.

3voto

apogalacticon Points 476

Ceci est un problème connu dans les anciennes versions d'Anaconda. Vous pouvez essayer de mettre à jour Anaconda (dans le terminal conda) :

conda update conda

Vous pouvez également essayer de supprimer le sysconfig._get_sysconfigdata_name() de la liste des hiddenimports dans votre fichier .spec et ajouter à la place import sysconfig dans votre fichier .py.

La documentation suivante sur le problème sur la page github de pyinstaller pourrait également vous aider : https://github.com/pyinstaller/pyinstaller/issues/3192

0voto

ethanjyx Points 1393

conda update conda n'a pas fonctionné pour moi, je vais donc simplement publier ma solution ici.

Tout d'abord, allez dans l'interpréteur Python interactif, faites

$ python
>> import sysconfig
>> print(sysconfig.__file__)

Cela devrait vous indiquer où se trouve le fichier pour sysconfig. Ensuite, vous devez vous rendre dans ce fichier et modifier le code source, pour moi c'était /opt/conda/envs/test/lib/python3.6/sysconfig.py, puis trouvez la fonction et changez la signature de la fonction pour _get_sysconfigdata_name, ce que j'ai fait était de rendre check_exists par défaut à True.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X