带有 cx_Freeze 的 Pyserial 运行时错误
Posted
技术标签:
【中文标题】带有 cx_Freeze 的 Pyserial 运行时错误【英文标题】:Pyserial runtime error with cx_Freeze 【发布时间】:2018-04-30 18:54:01 【问题描述】:我正在尝试在 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
从源代码运行时,代码运行良好。该错误仅在运行编译版本时显示。
有人有什么想法吗?提前致谢。
【问题讨论】:
【参考方案1】:该问题与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')
来破解此问题
虽然我现在有这个工作,但如果有人有一个合适的解决方案,那就太好了?
【讨论】:
以上是关于带有 cx_Freeze 的 Pyserial 运行时错误的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 Python/Pyserial 的 C/C++ DLL 与 Opticon 条码阅读器进行通信
带有 cx_freeze 的 python 3.2 tkinter 图标
使用 cx_Freeze 创建一个带有 Python 3.4 的 exe
Cx_freeze 不适用于带有 Python 3.6.2 的 Win 10