我有一个在Linux机器上构建的程序,我们称它为BUILD pc,我使用pyinstaller将其编译为二进制文件,并且在该计算机上运行良好。从那以后,我将文件传输到计算机A,运行相同版本的Linux,相同版本的python,并且在那里也可以正常运行。然后,我将文件传输到具有相同版本的Linux / Python的计算机B,但是由于某种原因,编译后的代码在这里无法正常工作。我收到“ ValueError:需要多个值来解压”消息。
如果我在计算机B上运行.py
源代码,则可以正常工作,因此我知道系统可以处理所有必需的导入,并且'ValueError'显然是由代码编译引起的。
我已经运行uname -a
并打开python控制台以显示正在使用的版本,并对可执行文件执行了file
命令以显示文件类型。
运行md5sum还会显示文件完全相同。
我正在寻找什么可能导致一个系统运行该程序,而另一个系统出现故障?
build system:
[usr @ BUILD〜] $ python
Python 2.4.3(#1,2012年10月23日,22:02:47)
linux2上的[GCC 4.1.2 20080704(Red Hat 4.1.2-54)]
输入“帮助”,“版权”,“信用”或“许可证”以获取更多信息。
>>>
[usr @ BUILD〜] $ uname -a
Linux BUILD 2.6.18-419.el5PAE#1 SMP 2017年2月22日星期三22:48:50美国东部时间i686 i686 i386 GNU / Linux
Computer A:
[usr @ SITE-A脚本] $ python
Python 2.4.3(#1,2012年10月23日,22:02:47)
linux2上的[GCC 4.1.2 20080704(Red Hat 4.1.2-54)]
输入“帮助”,“版权”,“信用”或“许可证”以获取更多信息。
>>>
[usr @ SITE-A脚本] $ uname -a
Linux SITE-A 2.6.18-348.el5PAE#1 SMP Wed Nov 28 21:44:58 EST 2012 i686 i686 i386 GNU / Linux
Computer B:
[usr @ SITE-B〜] $ python
Python 2.4.3(#1,2012年10月23日,22:02:47)
linux2上的[GCC 4.1.2 20080704(Red Hat 4.1.2-54)]
输入“帮助”,“版权”,“信用”或“许可证”以获取更多信息。
>>>
[usr @ SITE-B〜] $ uname -a
Linux SITE-B 2.6.18-348.el5PAE#1 SMP Wed Nov 28 21:44:58 EST 2012 i686 i686 i386 GNU / Linux
-Edito-
在指定的行周围添加了完整的错误消息和代码:
Traceback (most recent call last):
File "source.py", line 3009, in <module>
logmsg("Determining which Bays are Disabled.")
File "source.py", line 476, in acquire_old_registers
ValueError: need more than 1 value to unpack
[7407] Failed to execute script source
代码:
#475 for register in old_registers:
#476
#477 try: # Check if line in old_registers is blank
#478
#479 (key, val) = register.split(' ', 1)
同样,当作为.py文件运行时,该代码也可以正常工作。