错误:没有名为curses的模块。

20
当我尝试运行以下代码时...
from telnetsrvlib import *

if __name__ == '__main__':
"Testing - Accept a single connection"
class TNS(SocketServer.TCPServer):
    allow_reuse_address = True

class TNH(TelnetHandler):
    def cmdECHO(self, params):
        """ [<arg> ...]
        Echo parameters
        Echo command line parameters back to user, one per line.
        """
        self.writeline("Parameters:")
        for item in params:
            self.writeline("\t%s" % item)
    def cmdTIME(self, params):
        """
        Print Time
        Added by dilbert
        """
        self.writeline(time.ctime())

logging.getLogger('').setLevel(logging.DEBUG)

tns = TNS(("0.0.0.0", 8023), TNH)
tns.serve_forever()

我遇到了这个错误。
Traceback (most recent call last):
File ".\telserv.py", line 1, in <module>
from telnetsrvlib import *
File "C:\Python27\lib\site-packages\telnetsrvlib-1.0.2-py2.4.egg\telnetsrvlib.py", line 31, in <module>
import curses.ascii
  File "C:\Python27\lib\curses\__init__.py", line 15, in <module>
from _curses import *

我正在运行Python 2.7,并导入了telnetsrvlib库。我在Windows 7上运行代码。希望能得到帮助。


安装curses(我认为在Windows中是ncurses),您的telnetserver库可能与Windows不兼容。http://www.youtube.com/watch?v=V_MNiXCPQAY - Joran Beasley
如果我没记错的话,这也是当你有循环导入时会出现的错误。如果 A 导入 B,B 导入 C,C 又导入 B,那么当 C 尝试导入 B 时,B 将不可用但也无法卸载,因此你会收到一个错误。 - Silas Ray
你甚至可以找到源代码并将其粘贴到lib文件夹中!然后,导入将如常进行。 <h1>Maker's Effect</h1> <input type = 'text' value = '输入任何内容来测试您的键盘:'/> <input type = 'button' value = '完成!'/> - Harshit Gupta
5个回答

16

14

对我来说可以。

pip install windows-curses

13

从这里安装UniCurses模块:https://pypi.python.org/pypi/UniCurses

您可能需要修改一些代码才能使用它,因为它提供了NCurses的功能,而不是普通的curses库。

不幸的是,当前没有直接针对Windows平台的Python curses端口。


谢谢,这是默认 curses 模块的问题。 - Strommer
有没有Unicurses的文档?这是Google找到的全部内容:https://github.com/Chiel92/unicurses - ThorSummoner

5

受@YKB的启发,我为Ubuntu 16.04和Python3.5.2做了这个。

sudo apt-get install libncurses5-dev

然后进入Python源代码并运行make,就会生成两个新文件。

_curses.cpython-35m-x86_64-linux-gnu.so
_curses_panel.cpython-35m-x86_64-linux-gnu.so

然后将它们复制到安装Python的 lib-dynload 文件夹中。

4

我在Ubuntu 14.04上使用Python 3.4时遇到了同样的错误,以下是我是如何解决的。

我的/usr/local/lib/python3.4/lib-dynload/目录中没有以下文件 -

_curses.cpython-34m.so
_curses_panel.cpython-34m.so

我获取了最新的Python 3.4.2源代码,然后进行提取和编译:

./configure
make

现在我需要的.so文件在build/lib.linux-i686-3.4/中,我将它们复制到了/usr/local/lib/python3.4/lib-dynload/中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接