2017-02-14 1 views
14

J'utilise Python 3.3.3 et j'ai essayé de construire un fichier .exe à partir d'un simple script .py.Python, erreur PyInstaller: aucun module nommé "Encodings" et codec système manquant

Mon script ressemble à ceci:

import encodings 

print('Test') 

et exécute correctement.

Lorsque je tente de construire avec PyInstaller avec cette commande:

pyinstaller --onefile Testmodul.py

et essayez d'ouvrir mon .exe il apparaît avec cette erreur: Fatal Python error: Py_Initialize: unable to load the file system codec, ImportError: No module named 'encodings'

J'ai déjà essayé d'importer le module 'encodings' dans mon testscript mais ça ne marche toujours pas, j'ai aussi essayé py2exe et ça ne fonctionne pas du tout.

Y at-il quelque chose que je fasse mal? Dois-je installer quelque chose dans mon PATH? le chemin correct vers "C: \ Python33" est déjà inclus.

EDIT: Pour tout le monde avec ce problème: J'ai abandonné, et après une nouvelle installation de Windows et Python et tous les autres trucs, je l'ai essayé à nouveau, de la même manière qu'avant et ça a fonctionné sans problème. vaut la peine d'essayer si vous êtes vraiment désespéré!

+0

Avez-vous eu une idée «où sont vos données de codage SYS», comment utiliser python 'encodings'? Tous les détails du système d'exploitation dans l'utilisation publique? Initialiser signifie «non enregistré». Cette question concernait votre 'niveau d'information python'. Donc une astuce: ce code fonctionne sur inactif cos accordé beaucoup de permissions et enregistré (non public) sur plus de service/classe. Initialiser pour quel style 'permanent/temporaire'? – dsgdfg

+0

Oui, je sais que ce n'est pas un commentaire de bas niveau! – dsgdfg

+0

Dupliquer de http://stackoverflow.com/questions/5694706/py-initialize-fails-unable-to-load-the-file-system-codec –

Répondre

2

Ceci est probablement dû au fait que pyinstaller n'a pas inclus le module en premier lieu. vous pouvez essayer 2 solutions.

1) Définir le chemin d'accès au module lors de la compilation:

  • pyinstaller --onefile --paths =/chemin/vers/du module Testscript.py

2) Indique le chemin de le fichier .spec:

  • exécuter cette commande d'abord (dans le répertoire de pyinstaller):

    python Makespec.py --onefile /path/to/yourscript.py 
    
  • maintenant vous avez le fichier .spec. ouvrez-le dans votre éditeur de texte, et ajoutez le chemin de vos modules au pathex.

    pathex=['C:\\path\\to\\module'] 
    
  • puis, construire votre programme:

    python Build.py /path/to/yourscript.spec 
    

3) Utiliser les importations cachées:

  • pyinstaller --onefile --hidden-import = modulename Testscript.py
  • Vous pouvez également spécifier l'importation masquée dans le fichier .spec.
+0

Ou vous pourriez (à partir de n'importe quel répertoire si pyinstaller est dans votre chemin) courir "pyinstaller /path/to/your.spec" – Back2Basics

0

Quelle version de Windows utilisez-vous (7 ou 10)?

Cette question semble être par rapport au privilège de l'utilisateur ... et en supposant qu'il est semblable à this issue, vous pouvez d'abord essayer d'exécuter votre exe ​​fichier avec des privilèges d'administrateur, et si elle est failling à nouveau, essayez d'exécuter " Pyinstaller "à partir d'un cmd.exe en cours d'exécution avec droit administrateur.