Curses返回AttributeError: 'module'对象没有属性'initscr'。

13
我正在遵循Python网站上的Curses编程HowTo,但是我遇到了一个非常奇怪的问题。
我的代码目前非常简短,实际上什么都没做,由于这个错误,我无法继续。这是我的代码:
import curses
#from curses import wrapper

stdscr = curses.initscr()
curses.noecho()
curses.cbreak()

stdscr.keypad(True)

def main(stdscr):

    begin_x = 20; begin_y = 7
    height = 5; width = 40
    win = curses.newwin(height, width, begin_y, begin_x)

    stdscr.refresh()
    stdscr.getkey()

if __name__ == '__main__':
    wrapper(main)

和 Traceback:

Traceback (most recent call last):
  File "curses.py", line 1, in <module>
    import curses
  File "/home/nate/Documents/Programming/Python/curses.py", line 4, in <module>
    stdscr = curses.initscr()
AttributeError: 'module' object has no attribute 'initscr'

我注释掉了 from curses import wrapper,因为这会给我带来另一个错误。
Traceback (most recent call last):
  File "curses.py", line 1, in <module>
    import curses
  File "/home/nate/Documents/Programming/Python/curses.py", line 2, in <module>
    from curses import wrapper
ImportError: cannot import name wrapper

但我想这可能是另一个问题。我现在逐字地按照教程学习curses,但目前它唯一让我做的就是使用针对Python的curses :P。我在Ubuntu 13.10上运行Python 3.3.2,所以这个问题与此问题无关,因为他使用的是Windows,而我不是(谢天谢地:D)。为什么我不能做到这一点?我直接从Python网站复制,所以你会认为它应该能工作!
2个回答

65

你将文件命名为curses.py,因此Python认为那个文件是curses模块。请将其命名为其他名称。


1
当然啦...我简直不敢相信我会这么做 :P 谢谢 :D - RPiAwesomeness
5
如果错误仍然存在,请检查同一文件夹中是否有一个名为curses.pyc的文件,并将其删除。 - Jack M

3

mv curses.py 重命名为 someOtherName.py

如果你仍然遇到相同的错误,请尝试删除任何 .pyc 文件。

在这种情况下,应该是 rm curses.pyc


2
谢谢回答,但这本质上是与上面的重复。 :) - RPiAwesomeness
1
有点类似,但是有时候会忘记删除.pyc文件...这种情况下会出现相同的错误。 - chandan
这是真的。我认为你应该把这个作为评论,但在获得50个声望之前你无法这样做。 - RPiAwesomeness

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