Это временное исправление, пока не будет выпущено новое обновление в конце этого месяца.
Найдите путь к каталогу py2app
, так как вам нужно будет изменить некоторые строки кода в нескольких файлах в этом каталоге.
Если у вас есть терминал, вы можете найти каталог с помощью:
find ~/ -type f -name “*py2app*”
ФАЙЛ 1
py2app/build_app.py (строка 614)
Заменять:
if isinstance(self.plist, plistlib.Dict):
self.plist = dict(self.plist.__dict__)
else:
self.plist = dict(self.plist)
Со следующим:
if not isinstance(self.plist, dict):
self.plist = dict(self.plist)
ФАЙЛ 2
py2app/create_appbundle.py (строка 26)
Заменять:
dirs = [contents, resources, platdir]
plist = plistlib.Plist()
plist.update(kw)
plistPath = os.path.join(contents, 'Info.plist')
if os.path.exists(plistPath):
if plist != plistlib.Plist.fromFile(plistPath):
for d in dirs:
shutil.rmtree(d, ignore_errors=True)
for d in dirs:
makedirs(d)
plist.write(plistPath)
Со следующим:
dirs = [contents, resources, platdir]
plistPath = os.path.join(contents, 'Info.plist')
if os.path.exists(plistPath):
for d in dirs:
shutil.rmtree(d, ignore_errors=True)
for d in dirs:
makedirs(d)
plistlib.writePlist(kw, plistPath)
ФАЙЛ 3
py2app/script_py2applet.py (строка 13)
Заменять:
from plistlib import Plist
Со следующим:
import plistlib
Также замените (строка 115)
plist = Plist.fromFile(fn)
Со следующим:
plist = plistlib.fromFile(fn)
Затем вы можете, наконец, создать файл setup.py в каталоге вашего приложения с помощью:
py2applet --make-setup my_project.py
И создайте отдельное приложение с помощью:
python setup.py py2app -A
Вклад в этого парня для большей части приведенного выше кода.
Причина этой проблемы связана с тем, что Plist устаревает в python3.7. См. документацию по Python
person
user669132
schedule
24.07.2018