Python cx_Freeze - 一个可执行文件不打开另一个?

Posted

技术标签:

【中文标题】Python cx_Freeze - 一个可执行文件不打开另一个?【英文标题】:Python cx_Freeze - One Executable file does not open the other? 【发布时间】:2018-02-08 13:45:55 【问题描述】:

tss.py --> 这个文件包含一个打开另一个python文件(dark.py)的子进程

import subprocess as sp

def process():
    programName = "python.exe"
    fileName = "dark.py"
    sp.Popen([programName, fileName])

process()

当我在控制台上将其作为 .py 文件执行时,此功能有效。但是,当我使用 cx_Freeze 创建 2 个可执行表单(tss.exe 和 dark.exe)并打开 tss.exe 时,它​​不会打开另一个 dark.exe 文件。

下面是用于构建python文件的setup.py文件:

from cx_Freeze import setup, Executable
import sys
import os

tclDLL = r'C:\Users\Username\AppData\Local\Programs\Python\Python36-32\DLLs\tcl86t.dll'
tkDLL = r'C:\Users\Username\AppData\Local\Programs\Python\Python36-32\DLLs\tk86t.dll'

Packages = ["subprocess","tkinter"]
Include_Files = ["icon.ico", "dark.ico",tclDLL, tkDLL]

build_exe_options = "packages": Packages, "include_files": Include_Files

base = None
if sys.platform == "win32":
    base = "Win32GUI"

os.environ['TCL_LIBRARY'] = r'C:\Users\Username\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Username\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'

setup(  name = "TSS",
        version = "1.0",
        description = "Tournament Scoring System",
        options = "build_exe": build_exe_options,
        executables = [Executable("tss.py", base=base, icon="icon.ico")
                       Executable("dark.py", base=base, icon="dark.ico")])

谢谢

【问题讨论】:

【参考方案1】:

尝试在您的脚本中将 fileName = "dark.py" 重命名为 fileName = "dark.exe"

请记住,您正在将 .py 文件转换为可执行格式,即 .exe,因此您必须启动您的 exe 文件,而不是无法在另一台计算机上运行的 .py 文件。

所以它应该是这样的:

import subprocess as sp

def process():
    fileName = "dark.exe"
    sp.call(fileName)

process()

【讨论】:

以上是关于Python cx_Freeze - 一个可执行文件不打开另一个?的主要内容,如果未能解决你的问题,请参考以下文章

Python cx_Freeze - 一个可执行文件不打开另一个?

可执行文件 = 可执行文件 python 错误(尝试使用 cx_freeze 将 pygame 转换为可执行文件)

记录使用cx_Freeze打包Python成exe可执行程序

使用 python 3.7 PyQt5 和 cx_Freeze 创建可执行文件,但 DLL 无法加载

尝试使用 cx_freeze 将 python 文件转换为可执行文件时出错

使用 cx_Freeze 冻结成可执行文件后如何知道当前文件路径?