我已经搜索了很长时间,所以我放弃了。我创建了具有所有必需选项的setup.py文件。调用“ python setup.py build”,我得到了正在运行的.exe文件,但仅在我的计算机上。当我尝试在另一台计算机上启动该文件时-它无法启动。因为在最后一个模块的所有模块链中,都是这样的:
"F:\*myfilepath from the original system to*\lib\site-packages\shiboken2\__init__.py", line 27 in <module>
ImportError: DLL load failed:%1 is not Win32 application.
在shiboken的 init .py在第27行上有
from .shiboken2 import *
因此,我已经在第二个系统上冻结了该项目,而在第一个系统上启动了该项目之后-完全相同的问题。在创建.exe文件的系统上,它可以正常启动。我尝试使用Dependacy Walker,将所有可能的.dll丢失了,但是实际上只有Windows api dll实际上不需要被应用程序调用,而这是行不通的。另外,当我尝试使用空项目(仅导入PySide2)制作msi安装程序时,也会出现异常:
Traceback (most recent call last):
File "setup.py", line 39, in <module>
executables = [Executable("Namer_main.py", base=base, targetName='Namer.exe'
, icon='dude.ico')])
File "F:\Programs\Python\Python37-32\lib\site-packages\cx_Freeze\dist.py", lin
e 348, in setup
distutils.core.setup(**attrs)
File "F:\Programs\Python\Python37-32\lib\distutils\core.py", line 148, in setu
p
dist.run_commands()
File "F:\Programs\Python\Python37-32\lib\distutils\dist.py", line 966, in run_
commands
self.run_command(cmd)
File "F:\Programs\Python\Python37-32\lib\distutils\dist.py", line 985, in run_
command
cmd_obj.run()
File "F:\Programs\Python\Python37-32\lib\site-packages\cx_Freeze\windist.py",
line 416, in run
self.add_files()
File "F:\Programs\Python\Python37-32\lib\site-packages\cx_Freeze\windist.py",
line 139, in add_files
cab.commit(db)
File "F:\Programs\Python\Python37-32\lib\msilib\__init__.py", line 215, in com
mit
FCICreate(filename, self.files)
ValueError: FCI error 1
我的setup.py像这样:
import sys
from cx_Freeze import setup, Executable
build_exe_options = {'include_msvcr': True, "packages": ["os", "sys", "shelve", "random", "re"]}
# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(name = "Namer",
version = "0.3",
description = "Namer GUI App",
options = {"build_exe": build_exe_options},
executables = [Executable("Namer_main.py", base=base, targetName='Namer.exe', icon='dude.ico')])
所有问题甚至出现在带有PySide2导入的空项目上。所以我认为主要是shiboken2和cx_freeze兼容性的问题。但是其他人成功了。 规格:Windows 7(x64),Python 3.7.5,最新的PySide2和cx_freeze(来自PyPi)。