使用python 3.6+;py2app:为什么会生成pyc文件?

使用python 3.6+;py2app:为什么会生成pyc文件?,python,macos,python-3.x,runtime-error,py2app,Python,Macos,Python 3.x,Runtime Error,Py2app,我已经写了一个GUI,我想用py2app把它变成一个独立的OSX应用程序。Py2app使用以下命令成功生成了一个独立的OS X捆绑包: $ py2applet --make-setup superGui.py $ python3 setup.py py2app 我的setup.py如下所示: from setuptools import setup APP = ['/Users/username/PycharmProjects/gui/superGui.py'] DATA_FILES = [

我已经写了一个GUI,我想用py2app把它变成一个独立的OSX应用程序。Py2app使用以下命令成功生成了一个独立的OS X捆绑包:

$ py2applet --make-setup superGui.py
$ python3 setup.py py2app
我的setup.py如下所示:

from setuptools import setup

APP = ['/Users/username/PycharmProjects/gui/superGui.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True,
    'plist': {'LSUIElement': True,},
    'includes':['rumps'],}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
我已经基于添加了rumps包和LSUIElement。不管有没有它们,我都会犯同样的错误

但是,当我尝试运行应用程序时:

$ open dist/superGui.app
我在日志中收到以下错误消息:

06/01/17 12:42:51,321 superGui[55597]:   File "<frozen importlib._bootstrap>", line 961, in _find_and_load
06/01/17 12:42:51,322 superGui[55597]:   File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
06/01/17 12:42:51,322 superGui[55597]:   File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
06/01/17 12:42:51,322 superGui[55597]:   File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
06/01/17 12:42:51,322 superGui[55597]:   File "scrapy/__init__.pyc", line 10, in <module>
06/01/17 12:42:51,322 superGui[55597]:   File "pkgutil.pyc", line 616, in get_data
06/01/17 12:42:51,322 superGui[55597]:   File "importlib/util.pyc", line 83, in find_spec
06/01/17 12:42:51,322 superGui[55597]: AttributeError: 'NoneType' object has no attribute 'startswith'
06/01/17 12:42:51321 superGui[55597]:文件“”,第961行,在查找和加载中
2017年1月6日12:42:51322 superGui[55597]:文件“”,第950行,在“查找”和“加载”中解锁
2017年1月6日12:42:51322 superGui[55597]:文件“”,第646行,在“加载”中
2017年1月6日12:42:51322 superGui[55597]:文件“”,第616行,与加载向后兼容
2017年1月6日12:42:51322 superGui[55597]:文件“scrapy/_init__.pyc”,第10行,in
2017年1月6日12:42:51322 superGui[55597]:get_数据中第616行的文件“pkgutil.pyc”
2017年1月6日12:42:51322 superGui[55597]:文件“importlib/util.pyc”,第83行,在find_spec中
2017年1月6日12:42:51322 superGui[55597]:AttributeError:“非类型”对象没有属性“StartWith”
我有以下问题:

  • 如何解决此问题

  • 在“importlib/util.pyc”中查找find_spec时,似乎会发生错误。我不明白为什么py2app使用pyc文件,因为我使用的是Python 3.6。Python3.6不再使用pyc文件了,对吗?发生这种情况是因为py2app出于某种原因使用了2.7路径吗?(我还安装了Python 2.7)

  • 我不能用IDLE 3.6打开“importlib/util.pyc”(从我的理解来看,Python 3.6不再支持pyc文件),但当我用IDLE 2.7打开它时,我只会看到一个带有白色屏幕的窗口。如何成功打开此文件以更好地理解错误


  • 提前谢谢

    问题

  • 如何解决此问题
  • 众所周知,Python打包程序拒绝回答这个问题

  • 在“importlib/util.pyc”中查找find_spec时,似乎会发生此错误
  • 我不太了解python 3.6和冻结工具,但我知道冻结工具通常需要一段时间才能赶上新的python打包/构建内容。Python3.6是非常新的。如果现在冻结对你来说很重要,而且你不能得到3.6,你可能会考虑Python 3.5或3.4可能暂时。

  • 如何成功打开“importlib/util.pyc”以更好地理解错误
  • *.pyc
    编译版的
    .py
    。它可能不包含任何您可以检查以调试问题的内容。python发行版中应该有一个可以检查的
    importlib/util.py

  • 我还可以尝试什么?
  • 有几点建议:

  • 提出

  • 尝试其他冻结工具,如(尚未正式支持3.6)


  • 嗨,不幸的是,降到3.4没用。我也会尝试3.3(不能再低了,因为py2app只支持python2和python3.3+)。很遗憾,没有importlib/util.py文件。。我不得不说我对python有点失望。完全支持创建独立应用程序:(独立应用程序无疑是一个弱点,因为当它们无法工作时,找出原因可能非常困难。然而,语言本身以及它周围的库基础设施使它成为许多编程领域的高效环境。