系统:在Windows 10上运行的Python 3.7 64x。我的计算机上也安装了Anaconda,并通过VS Code进行编程。所有模块均已安装,已验证安装,并且是最新的。
我已经编写了一个脚本,并使用pyinstaller将其编译为.exe。 pyinstaller -wFi pyico.ico endpointapp3.py
。.exe可以在我的计算机上运行并运行,但不适用于我的计算机。该脚本的先前迭代已在其目标计算机(未安装python的Windows 7计算机)上进行了编译,测试和正常工作。
我的最新版本现在包含pyserial,并且可以在我的计算机上再次使用,但是在为目标计算机编译并创建.exe文件后,我遇到此错误。
File "endpointapp2.py", line 9 in <module>
ModuleNotFoundError: No module named 'serial'
[3512] Failed to execute script endpointapp2.py
第9行是我的import serial
行
正如我之前提到的,此可执行文件在我的计算机上运行,但不在其设计目标计算机上运行。我不想在目标计算机上安装python或python模块,因为我希望.exe具有包容性。
问题:
NOT A DUPLICATE-该文章用于在另一台计算机上编译和运行python .exe,该计算机独立于python,未安装任何模块或python。
答案 0 :(得分:0)
有了一些帮助和有益的建议(感谢martineau),我得以解决自己的问题。当使用pyinstaller进行编译时,它会生成一个.spec文件,该文件实际上是用来编译为.exe的。
Here我找到了必要的步骤,以确保要添加pyinstaller所需的文件。
Here我发现了如何正确地将模块信息添加到我的编译代码中。
一旦pyinstaller在.spec文件中具有正确的信息,我便能够按预期在目标计算机上进行编译和执行。
答案 1 :(得分:-1)
该模块称为pyserial
,但是代码中的库调用为import serial
。 Pyinstaller无法完成构建,因为确实没有名为serial
的模块。
要解决此问题,您需要告诉pyinstaller通过将正确的软件包包含在hiddenimports下的.spec文件中来导入正确的软件包。
hiddenimports=['pyserial']
对于包名称和import语句调用不同的任何情况都是如此。