2010-02-08 26 views
5

ttk modülünü kullanarak bir GUI uygulaması için Windows için bir yürütülebilir dosya oluşturmaya çalışıyorum. Ben cx_freeze ile bir exe yaptı, ama ben konsolda app çalıştırdığınızda bana aşağıdaki hatayı veriyor: my kodundancx_Freeze ImportError: isim alamıyor.

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 
İşte

hatları 14 ve 15:

import tkinter as tk 
import tkinter.ttk as ttk 

cevap

5

cx_freeze benziyor tkinter/__init__.py tarafından koşullu olarak içe aktarılan tkinter._fix modülünü içermesi gerektiğini farketmez. Eğer setup.py

+0

sayesinde cx_Freeze.Executable için açıkça --include-modules komut satırı argümanı ile bu modülü veya includes kelime argüman içerecek şekilde söyleyebilir ama şimdi init.tcl bir hata var, ben tcl8.5 includig bu manuel çözmek ve dist klasöründeki tk8.5 klasörü, ama bence en iyi çözüm değil. – Alquimista

+0

Bu doğru, genel olarak dondurma en iyi çözüm değildir :) Donma uygulaması (py2exe, cx_Freeze, py2app, vb) tam olarak neyin paketleneceğini bilmelidir. Hepsi, hangi Python modüllerinin dahil edilmesini gerektirdiğini tahmin etmeye çalışıyorlar, ancak gördüğünüz gibi bazen başarısız oluyorlar. Diğer dosyalardaki bağımlılıklar otomatik olarak ele alınamaz, bu yüzden her zaman sorunludur. –