2010-02-08 17 views
5

J'essaie de créer un exécutable pour Windows pour une application GUI dans tkinter en utilisant le module ttk. J'ai fait un exe avec cx_freeze, mais quand je lance l'application dans la console il me donne l'erreur suivante:cx_Freeze ImportError: impossible d'importer le nom

D:\My Dropbox\python\SAR Calculator\src\dist_tk> 
Traceback (most recent call last): 

    File "C:\Python31\lib\site-packages\cx_Freeze\ 
7, in <module> 

    exec(code, m.__dict__) 

    File "sarcalc_tk.py", line 14, in <module> 

    File "C:\Python31\lib\tkinter\__init__.py", li 

    from tkinter import _fix 

ImportError: cannot import name _fix 

Voici les lignes 14 et 15 de mon code:

import tkinter as tk 
import tkinter.ttk as ttk 

Répondre

5

On dirait cx_freeze ne réalise pas qu'il devrait inclure le module tkinter._fix, qui est conditionnellement importé par tkinter/__init__.py. Vous pouvez lui dire d'inclure ce module explicitement l'argument de ligne de commande --include-modules, ou l'argument mot-clé includes à cx_Freeze.Executable dans votre setup.py

+0

merci, mais maintenant j'ai une erreur avec init.tcl, je résous cette manualy includig tcl8.5 et le dossier tk8.5 dans le dossier dist, mais je pense que ce n'est pas la meilleure solution. – Alquimista

+0

C'est vrai, geler en général n'est pas la meilleure solution :) L'application de congélation (py2exe, cx_Freeze, py2app, etc) a besoin de savoir exactement quoi emballer. Ils essaient tous de deviner quels modules Python doivent inclure, mais comme vous l'avez vu, ils échouent parfois. Les dépendances sur d'autres fichiers ne peuvent pas être gérées automatiquement, elles sont donc toujours problématiques. –