带有 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

cx_Freeze 和 xlwings 作为带有斐波那契教程的独立版本时出错

带有 pyserial RS232 的微型开关在 tkinter 线程中启动/停止计时器,但即使停止也继续运行