我正在尝试在Raspberry Pi 3上使用cx_Freeze创建一个可执行文件。代码都编译没有问题,但我收到运行时错误:
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
从源代码运行时代码运行正常。该错误仅在运行编译版本时显示。
有人有任何想法吗?提前谢谢。
答案 0 :(得分:0)
此问题与sys.getfilesystemencoding()
返回None
相关,如下所述:
https://github.com/anthony-tuininga/cx_Freeze/issues/323
我尝试了建议回滚到版本5.0.2,5.0.1,5.0,但这些只是引发了不同的问题。
我设法通过将/usr/lib/python2.7/test/test_support.py
的第642行上的代码更改为硬编码字符串character.encode('UTF-8').decode('UTF-8')
虽然我现在有这个工作,如果有人有一个适当的解决方案会很好吗?