我在64位Linux操作系统上使用Enthought的Canopy环境。在编辑器附带的Ipython控制台中,一切正常。但是当我在终端中ipython并尝试使用魔术函数时,我收到以下错误。
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-3-29a4050aa687> in <module>()
----> 1 get_ipython().show_usage()
/home/shahensha/Development/Canopy/appdata/canopy-1.0.3.1262.rh5-x86_64/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc in show_usage(self)
2931 def show_usage(self):
2932 """Show a usage message"""
-> 2933 page.page(IPython.core.usage.interactive_usage)
2934
2935 def extract_input_lines(self, range_str, raw=False):
/home/shahensha/Development/Canopy/appdata/canopy-1.0.3.1262.rh5-x86_64/lib/python2.7/site-packages/IPython/core/page.pyc in page(strng, start, screen_lines, pager_cmd)
188 if screen_lines <= 0:
189 try:
--> 190 screen_lines += _detect_screen_size(screen_lines_def)
191 except (TypeError, UnsupportedOperation):
192 print(str_toprint, file=io.stdout)
/home/shahensha/Development/Canopy/appdata/canopy-1.0.3.1262.rh5-x86_64/lib/python2.7/site-packages/IPython/core/page.pyc in _detect_screen_size(screen_lines_def)
112 # Proceed with curses initialization
113 try:
--> 114 scr = curses.initscr()
115 except AttributeError:
116 # Curses on Solaris may not be complete, so we can't use it there
/home/shahensha/Development/Canopy/appdata/canopy-1.0.3.1262.rh5-x86_64/lib/python2.7/curses/__init__.pyc in initscr()
31 # instead of calling exit() in error cases.
32 setupterm(term=_os.environ.get("TERM", "unknown"),
---> 33 fd=_sys.__stdout__.fileno())
34 stdscr = _curses.initscr()
35 for key, value in _curses.__dict__.items():
error: setupterm: could not find terminfo database
所以,我安装了一个裸机的iPython shell,它不是Canopy提供的那个,并在那里尝试了相同的魔术功能,它运行正常。
我是否在安装时出错了?请帮忙
非常感谢 shahensha
答案 0 :(得分:4)
这不是一个解决方案,而只是一个观察。我的桌面是MacOS-X,我连接到Centos机器以运行64位的Enthought Canopy。如果我从iterm2 ssh,我得到与OP相同的错误消息,但如果我使用终端应用程序则不会。 我不确定其根本原因是什么,但可能有人可以验证Linux是否存在类似的情况。有趣的是,我可以在本地树冠上使用iterm2或Terminal,没有任何问题。
更新
我刚刚注意到,当终端应用显示"xterm"
时,iterm2中的TERM环境变量设置为"xterm-256color"
。在终端中运行Canopy ipython之前发出命令export TERM="xterm-256color"
在iterm2中解决了我的问题。
答案 1 :(得分:0)
Canopy用户Python似乎不是您的默认设置。看到这篇文章: https://support.enthought.com/entries/23646538-Make-Canopy-s-Python-be-your-default-Python-i-e-on-the-PATH-
更新:此处不正确 - 请参阅batu的解决方法答案。
答案 2 :(得分:0)
问题再现:
$ python -c 'import curses; curses.setupterm()'
Traceback (most recent call last):
File "<string>", line 1, in <module>
_curses.error: setupterm: could not find terminfo database
这irc log让我觉得这个错误与libncursesw有关。
我的Canopy版本是1.0.3.1262.rh5-x86_64。我已将其安装到~/src/canopy
。
在~/src/canopy/appdata/canopy-1.0.3.1262.rh5-x86_64/lib
我们可以看到我的canopy安装有libncursesw.so.5.7。
我的机器(Debian Wheezy 64bit)有libncursesw.so.5.9(在/lib/x86_64-linux-gnu/libncursesw.so.5.9
中)。我用树冠做了这个。您可以使用LD_PRELOAD并指向.so文件来打开/关闭问题。
将libncurses.so.5.7替换为libncurses.so.5.9:
CANOPYDIR=$HOME/src/canopy
CANOPYLIBS=$CANOPYDIR/appdata/canopy-1.0.3.1262.rh5-x86_64/lib/
SYSTEMLIBS=/lib/x86_64-linux-gnu
cp $SYSTEMLIBS/libncurses.so.5.9 $CANOPYLIBS
ln -sf $CANOPYLIBS/libncurses.so.5.9 $CANOPYLIBS/libncurses.so.5