15

当我尝试运行以下代码时...

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 上运行代码。任何帮助将不胜感激。

4

5 回答 5

16

您还可以从此处查看安装 curses 模块: http ://www.lfd.uci.edu/~gohlke/pythonlibs/#curses 。

它允许在 Windows 上使用 python 的本机诅咒,因此可以使用所有标准的 python curses 代码。

于 2013-08-10T15:44:23.397 回答
13

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

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

不幸的是,不存在直接用于 Windows 的 Python 移植。

于 2013-07-01T17:28:14.233 回答
10

这对我行得通:

pip install windows-curses
于 2019-07-12T08:56:03.527 回答
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/.

于 2015-02-06T20:01:20.070 回答
2

受@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

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

于 2017-03-23T13:40:23.670 回答