首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ModuleNotFoundError进行PyGObject hello world的py2app回溯

使用ModuleNotFoundError进行PyGObject hello world的py2app回溯
EN

Stack Overflow用户
提问于 2021-06-09 01:31:20
回答 1查看 23关注 0票数 0

我试图使用py2app将一个测试程序(一个"hello world")捆绑成一个macOS应用程序。

我得到的错误是:

代码语言:javascript
复制
/Applications/hello.app/Contents/MacOS/hello
Traceback (most recent call last):
  File "/Applications/hello.app/Contents/Resources/__boot__.py", line 101, in <module>
    _run()
  File "/Applications/hello.app/Contents/Resources/__boot__.py", line 84, in _run
    exec(compile(source, path, "exec"), globals(), globals())
  File "/Applications/hello.app/Contents/Resources/hello.py", line 5, in <module>
    import gi
  File "<frozen zipimport>", line 259, in load_module
  File "gi/__init__.pyc", line 40, in <module>
  File "<frozen zipimport>", line 259, in load_module
  File "gi/_gi.pyc", line 14, in <module>
  File "gi/_gi.pyc", line 10, in __load
  File "imp.pyc", line 342, in load_dynamic
ModuleNotFoundError: No module named 'gi._error'
2021-06-08 10:19:34.605 hello[41423:3966514] hello Error
make: *** [go] Error 255

该程序在py2app之外运行得很好,它是:

代码语言:javascript
复制
$ cat hello.py
cmd output started 2021 Tue Jun 08 10:20:44 AM PDT
#!/usr/bin/env python3

"""Just say hi."""

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk  # noqa

window = Gtk.Window(title="Title")
button = Gtk.Button(label='Hello World!')
button.show()
button.connect("clicked", Gtk.main_quit)
window.add(button)
window.show()
window.connect("destroy", Gtk.main_quit)
Gtk.main()

我的setup.py看起来像这样:

代码语言:javascript
复制
$ cat setup.py
cmd output started 2021 Tue Jun 08 10:21:27 AM PDT
"""
This is a setup.py script derived from https://stackoverflow.com/questions/5608080/how-to-specify-py2app-icon .

Usage:
    python3 setup.py py2app
"""

from setuptools import setup

app = ['hello.py']
options = {
    'iconfile': 'icon/hello.png',
}

setup(
    app=app,
    options={'py2app': options},
    setup_requires=['py2app'],
)

下面是我一直在使用的Makefile,其中包括创建图标文件:

代码语言:javascript
复制
$ cat Makefile
cmd output started 2021 Tue Jun 08 10:22:25 AM PDT
go: clean
    ./hello.py
    pbmtext 'hello!' | pnmtopng > icon/hello.png
    python3 setup.py py2app
    (cd dist && tar cflS - hello.app) | (cd /Applications && tar xvfp -)
    /Applications/hello.app/Contents/MacOS/hello

clean:
    rm -rf build dist
    rm -f icon/hello.png

我在macOS Big Sur (11.4)上使用自制的Python3.9.5和py2app==0.24。py2app是用pip安装的。

我怀疑这种情况需要一个“配方”,但我在py2app文档中没有看到用于PyGObject的配方。

我已经在谷歌上搜索了几个小时了,但没有任何收获。

有人有什么建议吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-06-09 06:38:09

奇怪的是,重启操作系统有帮助,还有已经尝试过的:

代码语言:javascript
复制
options = {
    'iconfile': 'icon/hello.png',
    'packages': ['gi'],
}

现在我得到了一个不同的错误--一个段错误。但我想我可能扫清了一个障碍。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67891910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档