_tkinter.TclError:无法读取文件“C:\ Users \ {用户名} \ AppData \ Local \ Temp \ _MEI45522 \ sv_ttk \ sv.tcl”:没有这样的文件或目录

问题描述 投票:0回答:3

我在我的项目(.py)中使用了Sun Valley Ttk Theme。它可以在 IDE (Thonny) 上运行,但当我将 .py 文件转换为 .exe 时,它不起作用。

我收到此行错误:

sv_ttk.set_theme("light")

_tkinter.TclError: couldn't read file "C:\Users\{username}\AppData\Local\Temp\_MEI45522\sv_ttk\sv.tcl": no such file or directory.

显然这个目录不存在,但为什么会存在呢?我该怎么办?

主题文件夹,.py和.exe在同一目录下。

除了我用过

-add-data 

在转换为 .exe 时添加主题文件夹作为附加内容。

python tkinter exe ttk thonny
3个回答
2
投票

您需要使用

sv_ttk
--collect-data
选项将
PyInstaller
模块包含到可执行文件中:

pyinstaller --onefile --collect-data sv_ttk project.py

假设

project.py
是主要的 Python 脚本。


0
投票

我遇到了和你一样的问题,这是我的解决方案。我觉得这更像是一个技巧

  1. 找到您在计算机中保存 Python 的目录

我的情况:C:\Users\PC-Name\AppData\Local\Programs\Python\Python310

  1. 转到文件夹
    tcl
    ->
    tk8.6
    并将您的自定义 .tcl 文件放在这里(例如:sprites_light.tcl)
  2. 通过
    pyinstaller Main.exe
  3. 执行您的程序
  4. 完成后,转到您的程序文件夹。创建了一个新文件夹。 转到
    dist
    ->
    <your-exe-file-name>
    ->
    tk
    并找到您的 tcl 文件。如果它在那里,那么你就成功了
  5. 最后,因为它需要一些 *.png 文件才能正常运行,所以您还将包含 png 的文件夹复制到上面的文件夹(tk 文件夹内)

祝你好运,希望对你有帮助!!


0
投票

这对我有用,我想在这里分享给所有需要它的人:

将 Python 转换为 Windows

导入操作系统 导入系统

def 资源路径(相对路径): 尝试: base_path = sys._MEIPASS # 运行 pyinstaller 后,如果仍在查找 # 对于临时文件夹,然后使用 sys._MEIPASS2,如果需要,使用 \ 而不是 / for #所有路径目录 除了例外: base_path = os.path.abspath(".")

return os.path.join(base_path, relative_path)

将“img/file_names”替换为resource_path(“img/file_names”)

在终端类型中: pyinstaller.exe --onefile --windowed --icon=your_image.ico Your_File.py

或者 在 Windows CMD 中输入: pyinstaller --onefile --windowed --icon=your_image.ico Your_File.py

可执行文件将位于名为“dist”的新文件夹中。

现在将所有依赖文件夹复制到“dist”文件夹中

运行 .exe,如果一切正常,则压缩文件夹以共享。

删除 Build 和 Dist 文件夹以及任何 .spec 文件。

将resource_path("img/file_names")替换回"img/file_names"

使用“inno setup”软件创建正确的安装文件,请使用视频末尾的此链接: https://www.youtube.com/watch?v=p3tSLatmGvU

如果找不到文件错误: 使用 MEIPASS 代替 MEIPASS2,反之亦然,然后使用 \ 代替 /(如果需要)。

© www.soinside.com 2019 - 2024. All rights reserved.