Я пытаюсь собрать тестовую программу (привет, мир) как приложение macOS, используя py2app.
Ошибка, которую я получаю:
/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:
$ 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 выглядит так:
$ 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, который я использовал, который включает создание файла значка:
$ 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
Я использую доморощенный питон 3.9.5 и py2app==0.24 на macOS Big Sur (11.4). py2app был установлен вместе с pip.
Я подозреваю, что эта ситуация требует рецепта, но я не вижу его для PyGObject в документации py2app.
Я гуглил об этом часами, но не повезло.
У кого-нибудь есть предложения?
Спасибо!