在 Pi4B 上的 Bookworm 上构建带有 tkinter 支持的 python3.13

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

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?

谢谢你。

python-3.x linux tkinter
1个回答
0
投票

我正在努力让 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 版本。我也可以尝试一下。

不做任何保证,我现阶段只是提出建议。

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