Я пытаюсь создать исполняемый файл с помощью cx_Freeze на Raspberry Pi 3. Весь код компилируется без проблем, но я получаю сообщение об ошибке выполнения:
import serial
File "/home/pi/.virtualenvs/cv/local/lib/python2.7/site-packages/serial/__init__.py, line 12 in <module> standard_library.install_aliases()
File "/home/pi/.virtualenvs/cv/local/lib/python2.7/site-packages/future/standard_library/__init__.py", line 487, in install_aliases
from future.moves.test import support
File "/usr/lib/python2.7/test/test_support.py", line 642, in <module>
character.encode(sys.getfilesystemencoding())\
TypeError: encode() argument 1 must be string, not None
Код отлично работает при запуске из исходников. Ошибка отображается только при запуске скомпилированной версии.
У кого-нибудь есть идеи? Заранее спасибо.
Проблема связана с тем, что sys.getfilesystemencoding()
возвращает None
, как описано здесь:
https://github.com/anthony-tuininga/cx_Freeze/issues/323
Я попробовал выполнить предложенный откат до версий 5.0.2, 5.0.1, 5.0, но это вызвало разные проблемы.
Мне удалось взломать это, изменив код в строке 642 /usr/lib/python2.7/test/test_support.py
на жестко закодированную строку character.encode('UTF-8').decode('UTF-8')
Хотя теперь у меня это работает, было бы неплохо иметь подходящее решение, если оно у кого-то есть?