Ipython 无法使用 readline 和 pip 安装 readline 出错

43 投票
3 回答
24843 浏览
提问于 2025-04-16 21:05

我安装了ipython,但它没有readline这个选项。我首先下载了gnu readline,然后编译并安装了它。我不知道这是否是个正确的解决办法,但这是我想到的第一件事。结果还是不行,出现了和之前一样的错误:

WARNING: Readline services not available on this platform.
WARNING: The auto-indent feature requires the readline library

然后我尝试用pip安装readline,但出现了下面的错误。希望能得到一些帮助:

running install

running build

running build_ext

building 'readline' extension

creating build

creating build/temp.linux-x86_64-2.6

creating build/temp.linux-x86_64-2.6/Modules

creating build/temp.linux-x86_64-2.6/Modules/2.x

gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DHAVE_RL_CALLBACK -DHAVE_RL_CATCH_SIGNAL -DHAVE_RL_COMPLETION_APPEND_CHARACTER -DHAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK -DHAVE_RL_COMPLETION_MATCHES -DHAVE_RL_COMPLETION_SUPPRESS_APPEND -DHAVE_RL_PRE_INPUT_HOOK -I. -I/home/jspender/include/python2.6 -c Modules/2.x/readline.c -o build/temp.linux-x86_64-2.6/Modules/2.x/readline.o -Wno-strict-prototypes

creating build/lib.linux-x86_64-2.6

gcc -pthread -shared build/temp.linux-x86_64-2.6/Modules/2.x/readline.o readline/libreadline.a readline/libhistory.a -L/home/jspender/lib -lncurses -lpython2.6 -o build/lib.linux-x86_64-2.6/readline.so

/usr/bin/ld: cannot find -lncurses

collect2: ld returned 1 exit status

error: command 'gcc' failed with exit status 1

----------------------------------------
Command /home/jspender/bin/python2.6 -c "import setuptools;__file__='/home/jspender/build/readline/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /tmp/pip-lBWIOm-record/install-record.txt failed with error code 1
Storing complete log in /home/jspender/.pip/pip.log

3 个回答

2

我在使用Ubuntu 14.04的时候也遇到了同样的问题,想安装一些Python库。iPython好像需要一个叫readline的东西,但我一直安装不上,直到我运行了以下命令。

sudo apt-get install python-dev
sudo apt-get install libncurses5-dev
sudo pip install readline
3

你遇到了一个链接错误:库文件 ncurses 没有安装,或者它已经安装了,但链接器在找错的文件。

你使用的是什么平台/操作系统?

如果你在使用 Linux/Unix,可以试试:

locate libncurses

看看这个库是否已经安装。如果你的系统里没有 libncurses*.{o,so,so.[0-9].[0-9]} 这些文件,那就安装这个库,还有 readline。如果有这些文件,那就检查一下在编译 readline 的时候,它在找哪个文件,可能你只需要创建一个符号链接,把库文件命名正确就可以了。

75

tmaric说得对。我在安装iPython的时候也遇到了同样的问题(我用的是Ubuntu 12.10,quantal,32位)。我缺少了ncurses5库的开发版本。你可以试试:

sudo apt-get install libncurses5-dev

然后通过pip再次安装readline模块。

pip install readline

撰写回答