如何从带有qt框架(pyside2)的python项目中正确地使用cx_冻结生成.exe文件?
我搜索这个已经有一段时间了,我放弃了。我已经创建了包含所有必需选项的setup.py文件。调用“python setup.py build”,我得到了正在运行的.exe文件,但只在我的计算机上运行。当我试图在另一台计算机上启动该文件时,它无法启动。因为在最后一个模块的所有模块链中,都有类似的东西:如何从带有qt框架(pyside2)的python项目中正确地使用cx_冻结生成.exe文件?,python,cx-freeze,pyside2,Python,Cx Freeze,Pyside2,我搜索这个已经有一段时间了,我放弃了。我已经创建了包含所有必需选项的setup.py文件。调用“python setup.py build”,我得到了正在运行的.exe文件,但只在我的计算机上运行。当我试图在另一台计算机上启动该文件时,它无法启动。因为在最后一个模块的所有模块链中,都有类似的东西: "F:\*myfilepath from the original system to*\lib\site-packages\shiboken2\__init__.py", line 27 in &l
"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.
所以,我在第二个系统上冻结了这个项目,在第一个系统上启动了这个项目之后——同样的问题。在创建.exe文件的系统上,它可以正常启动。我曾尝试使用Dependency 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
所有的问题甚至出现在PySide2导入的空项目上,所以我认为主要是shiboken2和cx_冻结兼容性的问题。但其他人却成功了。
规格:Windows 7(x64)、Python 3.7.5、最新的PySide2和cx_freeze(来自PyPi)。我也遇到了同样的问题,根据其他帖子,有时是基于Windows市场安装的,或者不支持3.8。然而,我没有看到任何不同的行为。你找到解决方案了吗?我也遇到了同样的问题,根据其他帖子,有时是基于Windows Market的安装或3.8不受支持。然而,我没有看到任何不同的行为。你找到解决办法了吗?
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
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')])