2016-09-22 37 views
1

我正在使用py2app从python脚本创建一个独立的APP,但是我遇到了一个问题,我希望你可以帮忙。Py2app - 添加“从x导入y”到setup.py

脚本在很大程度上依赖于Tkinter的,主要是Tkinter的消息框模块,这是不符合Tkinter的进口,而是具有使用单独的输入:

from tkinter import messagebox 

在我的setup.py文件,我用它来创建该应用程序,我已经包括了在蟒蛇中使用的所有模块,使用此代码:

from setuptools import setup 


APP = ['ch.py'] 
DATA_FILES = ['company.txt'] 
OPTIONS = {'argv_emulation': False, 'includes':['tkinter', 'requests', 'os'], 'iconfile': 'icon.icns'} 

setup(
    app=APP, 
    data_files=DATA_FILES, 
    options={'py2app': OPTIONS}, 
    setup_requires=['py2app'], 
) 

然而,当我编译应用程序,一切都运行完美,除了Tkinter的消息框,它根本就没有打开。我知道这是因为我没有在setup.py文件中专门导入它们。

有谁知道我可以告诉setup.py文件包括“从Tkinter的进口消息框?

非常感谢!

回答

1

找到答案大约一天的搜索之后,基本问题”不是个t用tkinter messagebox模块,问题在于用于联系API的请求模块,然后返回信息显示在消息框中,这就是为什么messagebox没有显示,因为没有对API进行请求。

要解决此问题,您需要将请求模块添加到“包”a一报还一为“包括”,像如下:

OPTIONS = {'argv_emulation': False, 'includes':['datetime', 'tkinter', 'requests'], 'packages':['requests'], 'iconfile':'icon.icns'} 

希望这有助于任何人在相同的情况下

+0

我可以知道请求和py2app您使用的是哪个版本?当程序编译到应用程序中时,我似乎无法获得工作请求,但应用程序GUI启动得很好。我正在使用请求2.18.4和py2app 0.10。谢谢! –