繁体   English   中英

在本地安装 tkinter 和 python

[英]Install tkinter and python locally

我在服务上使用 linux。 而且我没有root权限。 我将 python-3.2.3 本地安装到“/home/sam/install_sam”。 当我导入 tkinter 模块时。 我收到以下错误:

ImportError: No module named _tkinter, please install the python-tk package

我知道我需要安装 Tkinter 模块。 因为我没有root权限。 我不能像以下命令一样使用:

apt-get install python-tk
sudo apt-get install python-tk

我在goolge上搜索。 我从这里得到 tcl/tk 我使用以下命令安装它们。

cd ~/Downloads/tcl8.5.11/unix
./configure --prefix=/home/sam/install_sam/tcl
make
make install

cd ~/Downloads/tk8.5.11/unix
./configure --prefix=/home/sam/install_sam/tk 
            --with- tcl=/home/sam/Downloads/tcl8.5.11/unix
make
make install

cd ~/Downloads/Python3.2.3/
export LD_LIBRARY_PATH=/home/sam/install_sam/tcl/lib:/home/sam/install_sam/tk/lib
export LD_RUN_PATH=/home/sam/install_sam/tcl/lib:/home/sam/install_sam/tk/lib
./configure --prefix=/home/sam/install_sam/python 
make
make install

我仍然收到错误: INFO: Can't locate Tcl/Tk libs and/or headers 我应该如何为 python 配置 tcl/tk

在构建 Python 3 之前,使用 CPPFLAGS 环境变量设置 tcl 和 tk 的包含目录。这对我有用。

export CPPFLAGS="-I/home/sam/install_sam/tcl/include -I/home/sam/install_sam/tk/include"

最后。 我将 tcl/tk 和 python 安装在同一路径中。 它现在可以工作了。 命令如下:

cd ~/Downloads/tcl8.5.11/unix
./configure --prefix=/home/sam/install_sam/python3
make
make install

cd ~/Downloads/tk8.5.11/unix
./configure --prefix=/home/sam/install_sam/python3
            --with-tcl=/home/sam/Downloads/tcl8.5.11/unix
make
make install

export LD_LIBRARY_PATH=/home/sam/install_sam/python3/lib
cd ~/Downloads/Python3.2.3/3
./configure --prefix=/home/sam/install_sam/python3 
make
make install

有人可以告诉我如何以第一种方式为 python 配置 tcl/tk(在问题中提到) 我会很感激

sudo apt-get install tcl-dev tk-dev

为我工作,虽然我最终拉了一个 docker 图像并使用它。

在我的情况下,我已经import tkinter tkinter 在我的 Python3 环境中正常工作,但我必须使用预编译的 Python 和它自己的不包含依赖项的环境(Blender fyi)(我需要 tkinter 来运行matplotlib )。

在我的情况下,修复非常简单:

  1. 工作python 中, import tkinter tkinter 并使用tkinter.__file__检查它的安装位置。 这将类似于path/to/site-packages/tkinter

  2. tkinter文件夹复制到目标安装的site-packages

  3. 然后import _tkinter将不起作用。 再次使用文件技巧,找到丢失的.so文件,在我的 Ubuntu 中类似于 `path/to/python3.7/lib-dynload/_tkinter.cpython-37m-x86_64-linux-gnu.so'

  4. 同样,将.so文件复制到目标安装的相应lib-dynload中。 确保源 Python 版本和目标 Python 版本兼容

要确保您的目标 python 找到复制的文件,请确保目标路径列在sys.path下。

希望这可以帮助!
干杯,
安德烈斯

对于 CentOS,这是:

yum install -y tcl-devel tk-devel

在 CentOS 7 上工作。

一般来说,我发现 RHEL 有*-dev ,CentOS 有*-devel

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM