11

我在服务上使用 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

4

4 回答 4

6

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

export CPPFLAGS="-I/home/sam/install_sam/tcl/include -I/home/sam/install_sam/tk/include"
于 2012-11-27T00:14:50.610 回答
5

最后。我将 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(在问题中提到)。我会很感激

于 2012-08-29T08:58:37.003 回答
0
sudo apt-get install tcl-dev tk-dev

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

于 2017-10-04T13:09:06.040 回答
0

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

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

  1. 工作python 中,import 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的对应文件中。确保源 Python 版本和目标 Python 版本兼容lib-dynload

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

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

于 2019-05-09T00:48:28.593 回答