2015-04-23 7 views
7

La mia domanda è più o meno la stessa di questa domanda già fornita (Missing tkinter attributes after converting to py2exe executable). Ma si riferisce a Python 2.7, che usa Tkinter, invece di tkinter.py2exe - Modulo mancante FileDialog dopo aver compilato l'eseguibile di Tkinter gui

Principalmente sto avendo lo stesso problema eseguendo il mio eseguibile dopo la compilazione.

Traceback (most recent call last): 
    File "main.py", line 5, in <module> 
    File "gui.pyc", line 5, in <module> 
    File "matplotlib\backends\backend_tkagg.pyc", line 7, in <module> 
    File "six.pyc", line 199, in load_module 
    File "six.pyc", line 113, in _resolve 
    File "six.pyc", line 80, in _import_module 
ImportError: No module named FileDialog 

Ma, come io sto usando Tkinter con Python 2.7 vuol dire che non posso fare:

from tkinter import FileDialog 

Ho provato con

from tkFileDialog import askopenfilename 

e

import tkFileDialog 

ma nessuno ha funzionato. Sto affrontando il dover aggiornare python a 3 solo per essere in grado di compilare correttamente Tkinter? O c'è una soluzione che mi manca?

Questo è il mio setup.py corrente

from distutils.core import setup 
from glob import glob 
import py2exe 
import sys 
import matplotlib 

sys.path.append("C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\redist\\x86\\Microsoft.VC90.CRT") 

data_files = [("Microsoft.VC90.CRT", 
      glob(r'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x86\Microsoft.VC90.CRT\*.*'))] 
data_files.extend(matplotlib.get_py2exe_datafiles()) 

setup(
    data_files=data_files, 
    windows=['main.py'], 
    packages=[''], 
    name='ZLA', 
    version='0.1 beta', 
    description='Troubleshooter.', 
    requires=['matplotlib', 'PIL', 'py2exe'] 
) 

ho cercato di specificare tkFileDialog nelle opzioni: include: ma ancora fortuna :(

options={'py2exe': {'includes': ['Tkinter', 'tkFileDialog']}, } 

UPDATE:

ho trovato la risposta dopo alcune indagini. In realtà puoi solo

import FileDialog 

UPDATE2:

Se si vuole evitare il "non utilizzati importazione" Feedback alcuni debugger e IDE darvi, è possibile aggiungere il pacchetto FileDialog ai pacchetti dizionario di py2exe al posto

options={'py2exe': {'packages': ['FileDialog']},} 

Forse qualcuno può aiutare a chiarire perché è più appropriato?

+0

L'aggiornamento 2 ha funzionato molto bene per me. Grazie. –

risposta

2

Invece di utilizzare "include", utilizzare "pacchetti" e specificare solo il pacchetto, in questo caso "Tkinter".

+0

Grazie per la risposta! Sfortunatamente la tua risposta non sembra funzionare per me. Ricevo lo stesso importerror – djoe

+1

Credo che il problema è che FileDialog era/è un pacchetto separato di Tkinter, ho appena testato la tua soluzione usando FileDialog invece di Tkinter nei pacchetti, ed è stato in grado di compilare. Aggiornerò la domanda e ti ringrazio per avermi indicato nella giusta direzione :) – djoe

Problemi correlati