Python 3.x py2app应用程序只有在从终端启动时才能工作

Python 3.x py2app应用程序只有在从终端启动时才能工作,python-3.x,py2app,Python 3.x,Py2app,我刚刚打包了我的应用程序(OSX 10.12.15-python3.6-py2app 0.12),我的应用程序只有在使用MyApp.app/Contents/MacOS/MyApp从终端启动时才能工作。如果我在GUI中单击应用程序,它不会启动 这是我的setup.py: from setuptools import setup APP = ['mq.py'] DATA_FILES = [] OPTIONS = { 'iconfile':'icons/mq

我刚刚打包了我的应用程序(OSX 10.12.15-python3.6-py2app 0.12),我的应用程序只有在使用
MyApp.app/Contents/MacOS/MyApp
从终端启动时才能工作。如果我在GUI中单击应用程序,它不会启动

这是我的setup.py:

from setuptools import setup

    APP = ['mq.py']
    DATA_FILES = []
    OPTIONS = {
        'iconfile':'icons/mq.icns',
            'plist': {'CFBundleShortVersionString':'0.1.0',}
    }

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

我们能得到更多的信息吗?GUI是如何创建的,您是否得到了回溯,您是否尝试过其他方法?该应用程序是tkinter/ttk python3,除了几个标准库之外,没有其他库。它作为脚本和aftaer打包都非常有效,但只能从终端,不能从GUI。我现在没有回溯,但在我看来Pyton distributable并不完整,或者可能是错误的。当我说它没有启动时,我错了:它启动了,但在一个简单的函数上失败,该函数正在系统上查找文件。但是-同样-只有在我通过双击GUI启动应用程序的情况下。在这种情况下,应用程序打包程序可能使用临时目录作为捆绑包的工作目录。尝试使用绝对路径解析为
/
(或从绝对基本路径开始,从那里搜索文件)。当您从任何终端启动某个东西时,它使用该终端活动的路径。如果您必须
cd
到脚本或应用程序包,这就是工作路径。这是应用程序停止的代码段(由于它是一个执行/不执行点,整个应用程序无法继续)。`def checkifffmpeg(self):try:devnull=open(os.devnull)subprocess.call(['ffmpeg','-version'],stderr=subprocess.STDOUT,STDOUT=devnull)除此之外:return False return True`它查找安装在系统中的ffmpeg,在计算机路径中将其放入一个垃圾桶中,因为我正在打电话,这很难阅读。我们可以获得更多的信息吗?GUI是如何创建的,你有没有得到回溯,你有没有尝试过其他方法?应用程序是tkinter/ttkpython3,除了几个标准库之外,没有其他库。它作为脚本和后期打包都很好,但只从终端,而不是GUI。我现在没有回溯,但在我看来Python distributable并不完整,或者可能是错误的。我说它没有启动是错的:它启动了,但在一个简单的函数上失败了在系统上查找文件。但是-再次-仅当我通过双击GUI启动应用程序时。在这种情况下,应用程序打包程序可能使用临时目录作为捆绑包的工作目录。请尝试使用绝对路径解析为
/
(或从绝对基本路径开始并从那里搜索文件)。当您从任何终端启动某个程序时,它会使用该终端活动的路径。如果您必须
cd
到脚本或应用程序包,这就是工作路径所在的位置。这是应用程序停止的代码段(由于它是一个go/no-go点,整个应用程序无法继续。`def checkifffmpeg(self):try:devnull=open(os.devnull)subprocess.call(['ffmpeg','-version'],stderr=subprocess.STDOUT,STDOUT=devnull)除此之外:return False return True`它查找安装在系统中的ffmpeg,在计算机路径中将其放入一个垃圾桶中,因为我正在打电话,这很难阅读。