无法使.exe在其他计算机上执行-“没有名为串行模块”错误

时间:2019-02-27 16:33:56

标签: python-3.x exe pyinstaller pyserial

系统:在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具有包容性。

问题:

  1. 为什么会出现此错误?是什么意思?
  2. 是否有一种解决方法,可以让我将所有内容(使用pyinstaller)一起编译,以容纳所有必要的模块     .exe中的信息?
  3. 我还应该在原始脚本中添加其他内容以使我完成此工作吗?

NOT A DUPLICATE-该文章用于在另一台计算机上编译和运行python .exe,该计算机独立于python,未安装任何模块或python。

2 个答案:

答案 0 :(得分:0)

有了一些帮助和有益的建议(感谢martineau),我得以解决自己的问题。当使用pyinstaller进行编译时,它会生成一个.spec文件,该文件实际上是用来编译为.exe的。

Here我找到了必要的步骤,以确保要添加pyinstaller所需的文件。

Here我发现了如何正确地将模块信息添加到我的编译代码中。

一旦pyinstaller在.spec文件中具有正确的信息,我便能够按预期在目标计算机上进行编译和执行。

答案 1 :(得分:-1)

该模块称为pyserial,但是代码中的库调用为import serial。 Pyinstaller无法完成构建,因为确实没有名为serial的模块。

要解决此问题,您需要告诉pyinstaller通过将正确的软件包包含在hiddenimports下的.spec文件中来导入正确的软件包。

hiddenimports=['pyserial']

对于包名称和import语句调用不同的任何情况都是如此。