报告 - Python - 建设 - 独立 现在建立动态 Tkinter/Tcl/Tk

作者: geofft创建于 2025年8月8日更新于 2026年9月27日
标签bug

顿! 在今天发行的Python-Building-standone中,我们把"tkinter","libtcl"和"libtk"分成了他们自己的动态库(arstral-sh/Python-building-standone#676)。 我还没有亲自测试过PyInstaller 但我想这很有帮助 似乎9014号的操作是 它现在将神奇地工作, 但我想我会打开一个问题 这样大家就可以明确测试。 如果这里面有什么不对劲的话 请告诉我

你可以通过确保您拥有最新版本的 uv 并升级 您管理的 Python 安装, 或者抓住2020808 释放 从 Python - 建设 - 独立。 见https://GitHub.com/astral-sh/Python-building-standone/issues/129#issuescomment-3169282440 完整说明.

执行的细节,如果有帮助的话:

  • QQtkinter ' 现在是一个单独的扩展模块,不再静态地连接到bin/Python和libpython(因此,使用QQtkinter ' 的任何用户代码都需要将动态库捆绑,在运行时解开).
  • 在我们的lib'目录中,有单独的libtcl8.6.so'和libtk8.6.so'(或.dylib')图书馆。
  • 在Linux上,bin/python3'有一个DT RPATH'将其指向lib'目录,因此import tkinter'找到我们的libtcl和libtk副本。 “libpython3.x.x.”的用户需要自行建立Rpaths或东西。 (如果有用的话,可以在libpython3.x.so'上加上一条rath,或在tkinter'中将DT NEEED'修改为./././libtcl8.6.so'等(虽然这一伎俩只有利于glibc,而不是musl)。
  • 在macOS上, " lib/python3.x/lib-dynload/ tkinter.cpython-3x-darwin. " 有 " LC-RPATH " 指向 " loader path.././ " , " libtcl " 和 " LC LOAD DYLIB " 在 " libtkinter " 中的安装名称为 " rpath/libtcl.6.so.dylib " , " libtk " 中的安装名称也相同。 因此,如果您保持“ lib/” 目录结构, 您就不需要自己使用图书馆路径。
  • libX11和朋友现在静态地与`libtk'联系在一起。 在某个时候,我可能会使这些动态库和/或试图寻找系统版本.

内容来源: pyinstaller/pyinstaller