赞
踩
项目相关背景:
项目场景:示例:利用python编写串口调试助手上位机,与下位机进行数据传输。
项目中遇到的问题:
程序如果不通过pyinstaller打包就能够正常运行,通过pyinstall打包成.exe运行进行打开串口操作后会抛出异常:module ‘serial’ has no attribute ‘Serial’
问题的分析:
1.在网上查找资料后发现python3以后对串口的操作只需要pyserial模块而不需要serial模块,而pyserial模块的导入使用的是import serial,会不会是打包的时候自动无法区分?
具体解决方案:为了避免混淆我重新创建了个带虚拟机的工程,然后把代码重新赋值过去,在pycharm的控制台安装需要的包。
以下是具体步骤:
1.新建带虚拟机的工程
2.把代码复制过去,会发下有许多模块没有导入。ok,现在打开pycharm的终端。
3.安装相应的模块,针对这里只用安装pyserail即可。
#在终端中输入
pip install pyserial
4.确保程序能够正常运行后,使用如下命令进行打包
pyinstaller -F --hidden-import=serial --paths=D:\pythonProject5\.venv\Lib\site-packages main.py
上述命令中的== --paths== 选项用于指定搜索模块的路径。这应该确保 PyInstaller 可以找到 serial 模块,因为我自己也找了下serial.Serial这个给函数,发现他是在serial模块的serialjava中,如图
5.打包完成后就能正常运行了
总之有如下需要注意的点
1.只需要安装pyserial模块,导入的时候还是import serial。不要安装serial模块。
2.确保程序能够正常运行。
3.打包的时候使用我提供的命令,site-packages文件夹的路径就需要各位自己去找了。
另外如果项目比较大,不想重新创建个空项目慢慢去弄,可以试试先把pyserial和serial卸载了,再重新安装pyserial,以下是用到的一些命令,运行过程中需要你手动输入y确认卸载。
pip uninstall serial#卸载serial
pip uninstall pyserial#卸载pyserial
pip install pyserial#重新安装pyserial
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。