Python无法在Debian Lenny上编译_curses模块

4 投票
3 回答
6894 浏览
提问于 2025-04-16 02:45

我在几个服务器上安装的Python(2.6)没有编译支持curses这个功能,而我现在需要这个功能。虽然这些服务器上已经安装了libncurses5,但Python并没有为它编译绑定,所以当我尝试“import curses”时,出现了以下问题:

"ImportError: No module named _curses"

我的/lib/目录下有以下文件和符号链接:

lrwxrwxrwx 1 root root   17 2010-02-13 05:50 /lib/libncurses.so.5 -> libncurses.so.5.7
-rw-r--r-- 1 root root 251K 2008-12-14 22:31 /lib/libncurses.so.5.7
lrwxrwxrwx 1 root root   18 2010-02-13 05:50 /lib/libncursesw.so.5 -> libncursesw.so.5.7
-rw-r--r-- 1 root root 299K 2008-12-14 22:31 /lib/libncursesw.so.5.7

而/lib64/目录下有:

lrwxrwxrwx 1 root root   20 2010-08-13 12:26 /lib64/libncurses.so -> /lib/libncurses.so.5
lrwxrwxrwx 1 root root   17 2010-02-13 05:50 /lib64/libncurses.so.5 -> libncurses.so.5.7
-rw-r--r-- 1 root root 251K 2008-12-14 22:31 /lib64/libncurses.so.5.7
lrwxrwxrwx 1 root root   18 2010-02-13 05:50 /lib64/libncursesw.so.5 -> libncursesw.so.5.7
-rw-r--r-- 1 root root 299K 2008-12-14 22:31 /lib64/libncursesw.so.5.7

/usr/lib64和/usr/lib目录下都有:

lrwxrwxrwx 1 root root 20 2010-08-13 12:20 /usr/lib64/libncurses.so -> /lib/libncurses.so.5

当我尝试重新“make” Python时,最后得到了以下警告:

Failed to find the necessary bits to build these modules:
_curses_panel      _tkinter           bsddb185        
bz2                dl                 gdbm            
imageop            readline           sunaudiodev     
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

Failed to build these modules:
    _curses 

我需要做些什么才能重新编译Python以支持curses?我缺少了什么呢?

谢谢!

3 个回答

1

顺便说一下,在CentOS 6.4 64位系统上,编译Python 2.7.6时,你需要安装以下所有开发库:

yum install -y zlib-devel openssl-devel sqlite-devel bzip2-devel \
               ncurses-devel readline-devel gdbm-devel db4-devel tk-devel

安装完这些库后,运行 make,会发现还有四个模块没有编译成功:

Python构建完成,但构建这些模块所需的部分没有找到:

bsddb185 dl imageop sunaudiodev

要找到所需的部分,可以在setup.py文件中的detect_modules()函数里查找模块的名称。

根据这篇博客,这些模块已经过时:

sunaudiodev是为Sun平台准备的,dl是为32位平台的,imageop已经不再使用,而bsddb185没有文档说明。

4

没错,安装 libncurses5-dev,然后在 python 安装目录下运行 'make''make install' 就解决了问题。我在尝试安装并启动 bpython 时,第一次遇到了 _curses 的错误,那时我是在用自己定制的 Python 安装。

2

我不太确定到底是哪个操作解决了我的问题,但其中一个确实有效。我安装了libncurses5-dev和libreadline5-dev,然后重新编译了Python并重新安装(就是执行make和make install命令)。太好了!

撰写回答