【问题标题】:Error no module named curses错误没有名为 curses 的模块
【发布时间】:2013-06-28 21:46:39
【问题描述】:

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

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不兼容youtube.com/watch?v=V_MNiXCPQAY
  • 如果没记错的话,如果您有循环导入,这也是您将看到的错误。如果 A 导入 B 导入 C 导入 B,当 C 尝试导入 B 时,B 将不可用但也无法加载,因此您会收到错误。
  • 你甚至可以找到源代码并将其粘贴到lib文件夹中! 之后,导入将照常进行。

    Maker's Effect

标签: python windows python-2.7 telnet curses


【解决方案1】:

您也可以从这里安装 curses 模块: http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses

它允许在 Windows 上使用 python 的原生 curses,所以你所有的标准 python curses 代码都可以使用。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢这是默认curses模块的问题
    • 有 Unicurses 的文档吗?这就是 Google 想出的全部内容:github.com/Chiel92/unicurses
    【解决方案3】:

    这对我有用:

    pip install windows-curses
    

    【讨论】:

      【解决方案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 source 的副本。 然后(提取&)编译它:

      ./configure
      make
      

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

      【讨论】:

        【解决方案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 文件夹。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-04-09
          • 2020-02-12
          • 2017-12-26
          • 2019-01-17
          • 2014-12-25
          • 2018-04-29
          • 2011-06-26
          • 2017-01-07
          相关资源
          最近更新 更多