2015-04-23 14 views
7

Câu hỏi của tôi cũng tương tự như câu hỏi đã được trả lời này (Missing tkinter attributes after converting to py2exe executable). Nhưng nó liên quan đến python 2.7, sử dụng Tkinter, thay vì tkinter.py2exe - thiếu mô-đun FileDialog sau khi biên dịch Tkinter gui thực thi

Tôi về cơ bản có cùng một sự cố khi chạy tệp thi hành của tôi sau khi biên dịch.

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 

Nhưng khi tôi đang sử dụng Tkinter với python 2.7 nó có nghĩa là tôi không thể làm:

from tkinter import FileDialog 

Tôi đã cố gắng sử dụng

from tkFileDialog import askopenfilename 

import tkFileDialog 

nhưng không ai làm việc cả. Tôi phải đối mặt với việc phải nâng cấp python lên 3 chỉ để có thể biên dịch đúng Tkinter? Hoặc là có một workaround tôi đang mất tích?

Đây là setup.py hiện tại của tôi

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'] 
) 

Tôi đã cố gắng để xác định tkFileDialog trong các tùy chọn: bao gồm: nhưng vẫn không có may mắn :(

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

UPDATE:

tôi thấy câu trả lời sau một số điều tra. Bạn có thể thực sự chỉ

import FileDialog 

UPDATE2:

Nếu bạn muốn tránh sự "không sử dụng nhập khẩu" thông tin phản hồi một số bộ dò lỗi và IDE cung cấp cho bạn, bạn có thể thêm các gói FileDialog vào từ điển gói py2exe thay

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

Có lẽ ai đó có thể giúp làm rõ lý do tại sao thích hợp hơn?

+0

Cập nhật 2 hoạt động rất tốt đối với tôi. Cảm ơn bạn. –

Trả lời

2

Thay vì sử dụng "bao gồm", hãy sử dụng "gói" và chỉ chỉ định gói, trong trường hợp này là 'Tkinter'.

+0

Cảm ơn bạn đã trả lời! Thật không may câu trả lời của bạn dường như không hoạt động cho tôi. Tôi nhận được cùng một importerror – djoe

+1

Tôi tin rằng vấn đề là FileDialog là/là một gói riêng biệt từ Tkinter, tôi vừa thử nghiệm giải pháp của bạn bằng FileDialog thay vì Tkinter trong các gói và có thể biên dịch. Tôi sẽ cập nhật câu hỏi, và tôi cảm ơn bạn đã chỉ cho tôi đúng hướng :) – djoe

Các vấn đề liên quan