Question

J'ai écrit un programme d'interface graphique assez simple pour automatiser quelques processus pour les utilisateurs de Windows dans Python (car c'est le seul langage de programmation que je connais quelque peu qui s'exécutera sur Windows). Je ne voudrais pas idéalement que l'utilisateur doit exécuter un programme d'installation sur sa machine, car mon plan est qu'il s'exécute autonome dans un lecteur USB.

Cela dépend du système d'exploitation, de la fermeture, de la chaîne, du sys, du tkinter, du webbrowser, du pil, ftplib et du glob.

Il semble que toutes les dépendances aient été importées lorsque j'ai couru CX_Freeze dessus, sauf pour PIL. Je n'ai jamais utilisé CX_Freeze auparavant, donc je pourrais faire quelque chose de mal, mais cela ne semble pas. L'exécution du programme à partir du script .py Unfrozen fonctionne très bien.

Voici le message d'erreur que je reçois lorsque je essaie d'utiliser une commande PIL:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__
    return self.func(*args)
  File "E:\AlbumUploader.py", line 143, in OnButton2Click
    img.thumbnail(size, Image.ANTIALIAS)
  File "C:\Python32\lib\site-packages\PIL\Image.py", line 1573, in thumbnail
    self.load()
  File "C:\Python32\lib\site-packages\PIL\ImageFile.py", line 168, in load
    self.load_prepare()
  File "C:\Python32\lib\site-packages\PIL\ImageFile.py", line 234, in load_prepare
    self.im = Image.core.new(self.mode, self.size)
  File "C:\Python32\lib\site-packages\PIL\Image.py", line 39, in __getattr__
    raise ImportError("The _imaging C module is not installed")
ImportError: The _imaging C module is not installed

Merci pour toute l'aide que vous pouvez apporter. Je vois que cela fait toujours référence à C: Python32 qui pourrait faire partie du problème, car cela ne devrait pas l'être (si je ne me trompe pas).

Mise à jour:

J'ai regardé la FAQ PIL et il semble que l'essentiel de cette réponse est que je dois m'assurer que ma liste de chemises SYS est correcte. J'ai essentiellement attrapé tous les fichiers Python pour Windows et je l'ai inclus dans le lecteur USB que j'essaie d'utiliser pour tout contenir, et définir mon chemin comme tel:

program_dir = os.path.split(sys.argv[0])[0]
sys.path = [program_dir]
sys.path.append(program_dir + os.sep + 'Lib')
sys.path.append(program_dir + os.sep + 'Lib' + os.sep + 'site-packages')
sys.path.append(program_dir + os.sep + 'Lib' + os.sep + 'site-packages' + os.sep + 'PIL')
sys.path.append(program_dir + os.sep + 'DLLs')

Tous les chemins semblent corrects, mais pour une raison quelconque, j'obtiens toujours la même erreur. Lorsque j'exécute le fichier .py, tout fonctionne à 100%, mais cela semble le casser d'une manière ou d'une autre. D'autres modules semblent fonctionner très bien comme Shutil, OS et SYS, par exemple.

Était-ce utile?

La solution

Je pense que votre principal problème peut être que la bibliothèque d'imagerie Python (PIL) ne prend pas encore en charge Python 3.x.

Si vous regardez le Page de téléchargement PIL Vous verrez qu'il existe des téléchargements Windows pour Python 2.4, 2.5, 2.6 et 2.7 mais rien pour Python 3.x.

Cette question a une réponse qui détaille les ports non officiels de PIL pour Python 3.x qui pourraient être utiles.

Si cela fonctionne, vous pourriez jeter un œil La première question sur la FAQ PIL qui concerne l'erreur "Le module C _imaging C n'est pas installé" et répertorie diverses choses que vous pouvez faire pour identifier le problème.

Autres conseils

Dans le passé, j'ai trouvé que CX_Freeze avait des problèmes de réalisation des DLL correctes sous Windows.

j'ai utilisé Explorateur de processus Pour retrouver ce que les DLL étaient recherchées, mais pas trouvées, puis les a ajoutées au projet manuellement, ce qui l'a fait fonctionner. Comme il ferait de même pour n'importe quel fichier, j'imagine que la même chose pourrait être fait dans votre cas.

C'était pour mon utilisation avec PYSFML, donc votre kilométrage peut varier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top