python 3.2: cx_freeze未能导入全部pyserial

1 投票
1 回答
1161 浏览
提问于 2025-04-16 21:52

我在制作一个Python 3.2脚本的exe版本时遇到了一些问题。这个脚本需要用到pyserial库,并且是通过cx_freeze来打包的。但是,当我运行这个exe文件时,出现了以下错误:

Traceback (most recent call last):
File "C:\Python32\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 27,
in   <module>
  exec(code, m.__dict__)
File "my_serial_program.py", line 1, in <module>
  import serial
File "C:\Python32\lib\site-packages\serial\__init__.py", line 19, in <module>
  from .serialwin32  import *
File "C:\Python32\lib\site-packages\serial\serialwin32.py", line 12, in <module>
  from . import win32
ImportError: cannot import name win32

我稍微查了一下,发现pyserial这个库里面有一个叫“win32.py”的模块(还有一个叫serialwin32.py的模块);但是在cx_freeze生成的压缩文件里,win32.py却缺失了。简单地放一个pyc版本也没法解决这个问题。而且使用cx_freeze的“includes = [ ]”也没有效果。

有没有什么建议?我的问题说得清楚吗(我对Python还比较陌生)?

1 个回答

0

我也遇到过同样的问题。可以选择添加额外的模块,具体可以参考cx_Freeze导入错误:无法导入名称cx_Freeze的文档

只需要在命令后面加上--include-modules serial.win32就可以了。

撰写回答