python - cx-Freeze 可执行文件无法在另一台计算机上运行
问题描述
我用 Python 编写了一个程序,并用 cx-Freeze 创建了一个可执行文件。我必须在 setup.py 中包含 tk 和 tcl 库以及一些图像,才能使可执行文件正确运行。
我将这些文件链接到我计算机上的绝对路径,认为 cx-freeze 会将这些文件复制到最终的可执行文件夹中,以便它成为自己包的一部分。
该程序可以在我的 PC 上完美运行,但不能在我同事的 PC 上运行。
当 .exe 无法运行时,包括 tcl 和 tk 库以及图像是我的故障排除过程的一部分。我不知道下一步该做什么。
'''This is my setup.py file.'''
from cx_Freeze import setup, Executable
import sys
import os
includes = []
include_files =
[r"C:\Users\jchoujaa\AppData\Local\Programs\Python\Python37\DLLs\tcl86t.dll",
r"C:\Users\jchoujaa\AppData\Local\Programs\Python\Python37\DLLs\tk86t.dll",
r"C:\Users\jchoujaa\Desktop\Code\STARx App\Savvy Logger\Developer\Imaging\savron.png",
r"C:\Users\jchoujaa\Desktop\Code\STARx App\Savvy Logger\Developer\Imaging\s-icon.ico",
r"C:\Users\jchoujaa\Desktop\Code\STARx App\Savvy Logger\Developer\Imaging\STAR.png"]
os.environ['TCL_LIBRARY'] = r'C:\Users\jchoujaa\AppData\Local\Programs\Python\Python37\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\jchoujaa\AppData\Local\Programs\Python\Python37\tcl\tk8.6'
base = 'Win32GUI' if sys.platform == 'win32' else None
setup(name = "SavvyLogger",
version = "1.0",
description = "Logger Interpreter",
options={"build_exe": {"includes": includes, "include_files": include_files, 'packages': ['pandas', 'numpy']}},
executables = [Executable("SavvyLogger.py", base=base)])
这是我的同事在尝试打开我的可执行文件时收到的错误: 在此处输入图像描述
解决方案
Henry Yik 在评论中的建议奏效了。
问题是我已将 tkinter 使用的图像的路径设置为位于我桌面上的文件夹。
Henry 建议我将图像文件放在与 .py 脚本相同的文件夹中,并从图像变量中删除路径名。
这行得通!
推荐阅读
- python - 为什么我的 webscraper 返回 [] 到 powershell?
- ros - 调用“make -j4 -l4”失败
- django - 媒体文件未在 pythonanywhere.com (Django) 上加载
- angular - 在 canActivateChild 返回 true/false 之前,正确等待多个可观察对象在路由保护中返回数据
- format - 现有的 vega-lite 地图突然看起来非常放大 - 发生了什么?
- elasticsearch - 在 Metricbeat 中设置 beat.hostname
- r - Power BI 中的 R 视觉排序顺序
- html - 我想制作一个根据您的选择提供输出的网站
- node.js - 在茉莉花测试中模拟 process.exit
- google-analytics - 如何将谷歌分析添加到 jhipster 生产中?