Bookworm镜像的python3.9.2找到了tkinter,但我打算有其他版本的python3,都支持tkinter。
首先尝试了python3.12.5。 python 3.12.5 似乎可以工作,但它找不到 tkinter,尽管该文件位于文件系统中,它应该在 python3.12 构建之后位于该位置。
历史。
阅读了一些在线资源、博客,然后在 pi4b 上启动一个干净的 Bookworm...
1- 从 python.org 下载 python 3.12.5 源代码的 gzip 压缩包并对其进行扩展。
2-然后根据几个在线资源的推荐安装了一些推荐的(必要的?)库
pi@raspberrypi:~ $ sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev
build-essential is already the newest version (12.9).
libgdbm-dev is already the newest version (1.19-2).
libffi-dev is already the newest version (3.3-6).
libffi-dev set to manually installed.
libncurses5-dev is already the newest version (6.2+20201114-2+deb11u2).
libnss3-dev is already the newest version (2:3.61-1+deb11u3).
zlib1g-dev is already the newest version (1:1.2.11.dfsg-2+deb11u2).
libssl-dev is already the newest version (1.1.1w-0+deb11u1+rpt1).
The following NEW packages will be installed:
libreadline-dev libsqlite3-dev
完成。
3- 接下来是使用 make altinstall 构建 python 3.12.5,希望保持原始映像的 python3.9.2 完整。
在 python 3.12.5 中一切似乎都工作正常,直到导入 tkinter。 当前项目是 tkinter 项目。 但是,虽然系统上确实有 tkinter,但在运行 python 3.12.5 时却找不到它。
经过更多研究,显然,在构建任何 python3 版本之前,必须首先确保 tk-dev 库在系统上可用。 检查系统,不,没有。
检查 Bookworm 的存储库,是的,tk-dev 可以安装。 我运行的是默认的Bookworm的python3.9.2。 3.9.2 版的 tkinter 可以工作。
退出然后运行python3.12.5。 它没有找到 3.12.5 安装的 tkinter,尽管在 make install 之后它也存在。 绑定问题?
结论:假设打包的 python 3.9.2 是为 Bookworm 镜像构建的,并且 tk-dev 正确可用,当时,当镜像准备好并测试分发时,那么 tk-dev 和可能的 tcl-dev 必须如果未来的 python3 构建能够找到它们的 tkinter 文件,请首先在任何其他附加 python3 构建之前安装在系统上。 也许 tk-dev 在构建 python3 版本时确保 tkinter 的正确绑定? 这就引出了以下问题:
搜索存储库时,发现以下资源...
tk-dev
tk-doc
tk8.6
tk8.6-dev
tk8.6-doc
tcl
tcl-dev
tcl-doc
tcl8.6
tcl8.6-dev
我想要 tkinter 版本 8.6,因为它似乎仍然是最新的。
问题1:为什么tk-dev和tk8.6-dev都可用? 都是 v.8.6 吗?
我计划接下来要做的事情:
sudo apt install tk-dev tk-doc tk8.6-dev tk8.6-doc
sudo apt install tcl-dev tcl-doc tcl8.6 tcl8.6-dev
今天决定构建 python 3.13,
接下来,执行 python 3.13 的 make altinstall
问题 2:您能否详细说明此计划中可能缺少的任何内容,或者在 python 3.13 的 make altinstall 之前不需要安装的任何内容,以确保 python 3.13 中完全支持 tkinter 8.6?
谢谢你。
我正在努力让 tkinter 在 Linux Mint 22 上使用 Python 3.13.0。
Tkinter 在 Python 3.12.3 上运行良好(默认来自 Synaptic 包管理器)。
我按照如何从源安装 Python 3.13.0 中的说明进行操作。
$ python3.13
Python 3.13.0 (main, Oct 25 2024, 20:06:35) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
File "<python-input-0>", line 1, in <module>
import tkinter
File "/usr/local/lib/python3.13/tkinter/__init__.py", line 38, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named '_tkinter'
我这样做的主要原因是因为 3.13.0 在 Windows 上有问题 3.13.0 tkinter 与 windows 10 中的 venv ,我想在 Linux 上测试它。
这里有一篇信息非常丰富的帖子:为什么 tkinter(或海龟)似乎丢失或损坏?它不应该是标准库的一部分吗? 作者:Karl Knechtel,我想你可能会喜欢看到。
我遇到的另一个可能有帮助的命令是sudo apt-get install python3.13-tk
。该软件包在 LM 存储库中不可用,但我将添加 Ubuntu PPA 并稍后尝试。最后,deadsnakes PPA 位于 ppa:deadsnakes/ppa,它具有最新的 Python 版本。我也可以尝试一下。
不做任何保证,我现阶段只是提出建议。