关于#python#的问题:已安装pyserial和serial但用pyinstaller打包为exe运行还是报错No module named 'serial(开发工具-pycharm)

已安装pyserial和serial但用pyinstaller打包为exe运行还是报错No module named 'serial!

img

程序可以在pycharm上运行。


这个问题可能是由于 pyinstaller 打包时没有将 serial 模块包含在可执行文件中导致的。这种情况下,你需要手动将 serial 模块添加到打包后的可执行文件中。

以下是一种可能的解决方法:

在命令行中进入 Python 环境,使用以下命令找到 serial 模块的安装路径:

Copy
python -c "import serial; print(serial.__file__)"

这个命令会输出 serial 模块的安装路径,例如:

C:\Users\username\AppData\Local\Programs\Python\Python39\lib\site-packages\serial_init_.py

Copy
在命令行中进入 pyinstaller 打包的目录,使用以下命令打包你的 Python 脚本:

Copy
pyinstaller your_script.py


打包完成后,在打包目录下找到 your_script.spec 文件,用文本编辑器打开它。

在 your_script.spec 文件中找到 hiddenimports 字段,将其修改为以下内容:

Copy
hiddenimports=['serial']

这个修改会告诉 pyinstaller 将 serial 模块包含在打包后的可执行文件中。

保存 your_script.spec 文件并退出。

在命令行中重新运行 pyinstaller,使用以下命令重新打包你的 Python 脚本:

Copy
pyinstaller your_script.spec


打包完成后,在打包目录下找到 dist 目录,里面就是打包后的可执行文件,运行它,就应该可以正常使用 serial 模块了。

回答整理自chatgpt,如果有帮助麻烦采纳一下,谢谢啦!

  • 以下回答由chatgpt基于相关博客总结生成:

    针对在使用pyinstaller打包python程序时出现"No module named 'serial'"的报错问题,可以尝试以下解决方案:

    1.确认已经在pycharm中安装了pyserial模块和serial模块,在pycharm中可以成功运行。

    2.在命令行中输入以下命令安装pyinstaller:

    pip install pyinstaller
    

    3.在命令行中进入要打包的程序所在文件夹,使用以下命令进行打包:

    pyinstaller -F -w your_file_name.py
    

    其中,-F参数表示将所有库文件打包成一个可执行文件,-w参数表示打包为没有cmd窗口的exe。

    4.若仍然出现"No module named 'serial'"的报错,可以尝试加入以下参数:

    --hidden-import=serial --hidden-import=serial.serialwin32
    

    完整的打包命令为:

    pyinstaller -F -w --hidden-import=serial --hidden-import=serial.serialwin32 your_file_name.py
    

    5.如果打包后的exe文件在复制到其他文件夹并修改名称后出现权限问题,可以尝试重新启动计算机或者杀掉线程释放资源。同时,建议不要在复制后修改exe文件名称,而是直接复制到目标文件夹。

    如果以上方案均未解决问题,可能需要进一步排查程序代码和环境等因素。