Я создаю приложение с PyQt5 (5.10) и Python 3.6.Я использую PyInstaller , чтобы связать мое приложение.На MacOS PyInstaller создает каталог с именем dist
, который содержит исполняемый файл myapp
и пакет myapp.app
.Исполняемый файл работает отлично.Пакет myapp.app
работает хорошо, но когда я вставляю акцентированные символы, такие как é
во входной виджет, приложение вылетает с ошибкой:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 63: ordinal not in range(128)
myapp.app
просто содержит исполняемый файлmyapp
работает так, как я ожидал.
Я тестировал запуск myapp
с пустой средой:
env -i ./myapp
Я получаю ту же ошибку, что и myapp.app
.
С определением LANG
:
env -i LANG=fr_FR.UTF-8 ./myapp
Нет ошибок.
Итак, теперь я знаю, что проблема связана с LANG environment variable
.
Теперь мой вопрос:
Как создать свой пакет, чтобы разрешить myapp.app
доступ к переменной среды LANG?
Любая помощь будет принята с благодарностью.
Вотмой файл спецификаций PyInstaller:
# -*- mode: python -*-
import os
import sys
block_cipher = None
if os.name == 'nt':
icon = 'images/icon.ico'
elif sys.platform == 'darwin':
icon = 'images/icon.icns'
else:
icon = None
a = Analysis(['../main.py'],
pathex=['.'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='My App',
debug=False,
strip=False,
upx=False,
runtime_tmpdir=None,
console=False, icon=icon)
app = BUNDLE(exe,
name='My App.app',
icon=icon,
bundle_identifier='com.me.myapp',
info_plist={
'NSHighResolutionCapable': 'True'
},)