在用户空间安装python和pygtk

1 投票
2 回答
1799 浏览
提问于 2025-04-17 21:46

我正在尝试在我的Ubuntu系统上安装带有pygtk的python。

因为我没有管理员权限,所以我需要把所有的包安装到本地,比如放在/home/user/local/lib这个地方。

我可以成功安装python,但我无法把其他的包(比如pygobject、pygtk等)链接到我本地安装的python上。

如果我尝试用以下命令在本地安装pygtk:

./configure --prefix=/home/shrihari/local/lib/pygtk2.24/

就会出现以下错误:

checking for GLIB - version >= 2.8.0... yes (version 2.28.6)
checking for PYGOBJECT... yes
checking for gio-types.defs... no
checking for ATK... yes
checking for PANGO... yes
checking for codegen... configure: error: unable to find PyGObject codegen

我的默认python版本是python2.4。如果我在python2.4中导入pygtk,它可以正常工作,但我需要在python2.7中使用pygtk。

那么我该怎么做呢?如果有关于如何在用户空间本地安装python、pygtk、pygobject的好文档,请分享一下。

提前谢谢你!

2 个回答

1

这个错误是因为pygobject和gobject-retrospection之间不兼容。为了避免这个问题,如果你的GTK版本比较旧,建议使用2.90.1之前的Pygobject版本。我在CentOS 5.5上使用了以下方法让它正常工作:

  1. pygobject-2.28.6 在构建pygobject的时候,要用--disable-introspection来关闭反射功能。

  2. gobject-retrospection 1.32.1

1

一般来说,如果你想把一个构建(build)和已经安装的东西连接起来,你需要设置两个环境变量:LD_LIBRARY_PATH 和 PYTHONPATH。LD_LIBRARY_PATH 是用来告诉系统去哪里找库文件的,而 PYTHONPATH 是告诉 Python 去哪里找模块的。这些变量需要指向你安装的那个“东西”的目录。举个例子,如果你把 Python 2.7 安装在 /home/shrinari/local/python27 这个路径下,那么你需要在系统中设置这些变量,像这样(适用于 bash):

export LD_LIBRARY_PATH=/home/shrinari/local/python27/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/home/shrinari/local/python27/lib/python2.7/site-packages:$PYTHONPATH
export PKG_CONFIG_PATH=/home/shrinari/local/python27/lib/pkgconfig:$PKG_CONFIG_PATH

设置好之后,你就可以尝试编译一些依赖于你新安装的 Python 的东西了。不过,根据你提供的配置错误信息,我觉得这对你现在的情况可能没什么帮助。看起来你在 PyGObject 这部分缺少了一些东西,可能是头文件,也可能是某个模块(我对 PyGObject 的具体情况不太了解)。总之,为什么配置脚本找不到某些东西,通常可以通过查看 config.log 文件来更清楚地了解,这个文件在你运行配置脚本后会出现在构建目录中。

撰写回答