在 RHEL 7 上使用自定义 TCL/TK 安装 Python 3.12

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

我正在尝试在 RHEL 7 上使用 TCL/TK 构建 Python 3.12。

我的root权限为0。我的系统构建已经非常过时了。我无法控制这一点,也无法更新/使用软件包安装程序,这就是为什么我经历了“从源代码编译”的努力。

经过深入研究,我发现过去有一个 --with-tcltk 的配置选项...但这些选项已被删除。查看最新动态后,我发现您可以使用环境变量 TCLTK_CFLAGS 和 TCLTK_LIBS 指定自定义位置。我的 tcl/tk 安装不在同一目录中,它们分别位于 $HOME/.../tcl8.6 和 $HOME/.../tk8.6 下。 (我在环境变量上使用abs路径)

我知道我已经很接近了,但是在使用这些变量构建后,在 RHEL 7 上编译 python3.12.1 后我仍然无法导入 tkinter。

我还没有找到任何关于如何使用这些变量、我需要指定哪些路径/什么是必需的或如何执行此操作的任何示例的信息。

python redhat rhel7 python-3.12
1个回答
0
投票

好的,为可能有类似问题的人找到了答案。我走在正确的轨道上,但我错过了 TCLTK_LIBS envvar 上的 -tcl8.6 和 -tk8.6 选项。

这里是帮助我解决这个问题的帖子来源的链接:解决方案

我将所有设置都放在脚本中。

***为了加载 tkinter,在启动 python 之前,您需要使用 tcl/tk/ssl 库目录导出 LD_LIBRARY_PATH。使用工作站依赖的程序导出此环境变量螺丝,因此每次加载 python 时都需要执行此操作。

#!/bin/bash

#My source locations; yours will differ
bin_path="$HOME/bin"
src_path="/mnt/netapp_data/bin/src"

python_source="$bin_path/src/sourcefiles/Python-3.12.1"
python_dest="$bin_path/src/python/python3.12"

ssl="$src_path/openssl"
tk="$src_path/tk8.6"
tcl="$src_path/tcl8.6"

# Need to export these vars; need '-L{lib_dir} -l{lib}' per library apparently
export LD_LIBRARY_PATH=$tcl/lib:$tk/lib:$ssl/lib
export TCLTK_CFLAGS="-I$tcl/include -I$tk/include"
export TCLTK_LIBS="-L$tcl/lib -ltcl8.6 -L$tk/lib -ltk8.6"

#This is pretty standard after setting up the env vars
cd $python_source
./configure --prefix=$python_dest --with-openssl=$ssl --with-ensurepip=install
make -j4
make install
© www.soinside.com 2019 - 2024. All rights reserved.