Py2app - 将“从x import y”添加到setup.py

时间:2016-09-22 14:10:23

标签: python tkinter py2app

我正在使用py2app从python脚本创建一个独立的APP但是我遇到了一个问题,我希望你可以帮忙。

该脚本在很大程度上依赖于tkinter,主要是tkinter消息箱模块,它不是用tkinter导入的,而是必须使用以下方式单独导入:

from tkinter import messagebox

在我用来创建应用程序的setup.py文件中,我使用以下代码包含了python中使用的所有模块:

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 import messagebox?

1 个答案:

答案 0 :(得分:2)

在大约一天的搜索后找到答案,基本上问题不在于tkinter messagebox模块。问题在于用于联系API的请求模块,然后返回信息以显示在消息框中。这就是消息框没有显示的原因,因为没有向API发出请求。

要解决此问题,您需要将“请求”模块添加到“包”以及“包含”,如下所示:

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

希望这可以帮助同一场景中的任何人