Python 3.4在Windows7上使用curses需要什么?

41

我在我的Windows 7 (x64)电脑上有一个运行的Python 2.7/3.4安装。我想在Windows上测试curses。

curses已经安装但无法正常工作:

>>> import curses
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Tools\Python3.4.2\lib\curses\__init__.py", line 13, in <module>
    from _curses import *
ImportError: No module named '_curses'

文档中提到:

Python 的 Windows 版本不包括 curses 模块。但是有一个移植版本称为 UniCurses 可用。

所以,Python 3.4 的 Windows 安装程序安装了带有未解决依赖项的 curses。这可以称为 bug…

好吧,我研究了一下 UniCurses。它是一个 PDCurses 的包装器:

UniCurses 是 Python 2.x/3.x 的一个包装器,在所有平台上(MS Windows、Linux 和 Mac OS X)提供统一的 Curses 函数,并且其语法与原始 NCurses 接近。为了在 Microsoft Windows 系统上提供 Curses 功能,它使用PDCurses 进行封装。

通过 pip3 安装 UniCurses 会导致错误:

C:\Users\Paebbels>pip3 install UniCurses
Downloading/unpacking UniCurses
  Could not find any downloads that satisfy the requirement UniCurses
  Some externally hosted files were ignored (use --allow-external UniCurses to allow).
Cleaning up...
No distributions at all found for UniCurses
Storing debug log for failure in C:\Users\Paebbels\pip\pip.log

Python的UniCurses网站上的SourceForge链接已经失效。在SourceForge上进行手动搜索帮助找到了Python的UniCurses

但是,UniCurses 1.2安装程序无法在我的Windows注册表中找到任何Python安装(Python 2.7.9和Python 3.4.2可用)。

我还研究了公共域Curses(PDCurses)。PD Cureses 3.4是从2008年底开始的。所以它已经7年了。我不相信它会在Windows 7、Windows 8.1或Windows 10上运行。

是否有办法在Windows上使用Python运行curses。

(Windows Python,不是CygWin Python!)


1
它可能可以工作,因为没有基本的不兼容问题 - 但是这样做,你将不得不学习如何修改UniCurses(并构建那个)。 - Thomas Dickey
2
Christoph Gohlke提供了curses的Windows版本。下载curses‑2.2‑cp34‑none‑win_amd64.whl并按照安装wheel文件的说明进行安装。 - Eryk Sun
2
@eryksun请将您的评论编写为答案,以便我可以对其进行投票。安装顺利进行。 - Paebbels
5
你是专注写 curses 代码的,还是需要一个等价的 API?如果是后者,我已经解决了所有与 asciimatics 相关的问题。这个软件包会为你提供一个跨终端的 API,可以在 Windows 7、8和10上运行,并提供许多动画效果。 - Peter Brittain
3个回答

61

如果您需要在Windows上手动安装,或像其他软件包一样在其他平台上安装,则可以跨平台使用curses(Windows、MacOS、GNU / Linux)。

  1. 安装wheel软件包。如果您需要有关 wheel 更多信息,请点击此处。

  2. 转到此存储库

  3. 下载符合您Python版本的软件包,例如对于Python 3.4:

curses-2.2-cp34-none-win_amd64.whl
  • 安装它(如果你在Windows上,使用这个命令;在GNU/Linux上像安装其他软件包一样安装)

  • python -m pip install curses-2.2-cp34-none-win32.whl
    
  • 只需在你的Python脚本中加入:

  • import curses 
    

    你可以使用Python的curses包装器。在Fedora 25中的所有终端和使用git bash、powershell或cmd的Windows 10中都可用。

    更新:

    • Windows中curses的另一种替代方法在这里
    • 在Windows中的控制台用户界面在这里
    • 一个有趣的教程在这里

    2
    你要求使用Python 3.4,我尝试了这个版本并且它可以工作。似乎在wheels中不存在这个版本,但是如果你想尝试的话,有Python 3.5和3.6版本可用。 - vgonisanz
    1
    @Paebbels 是的,我今天检查了一下,Python 3.5 和 Python 3.6 也有对应的“轮子”(即库),而且 3.6 版本对我来说也可以正常使用。 - PhoenixS
    1
    此外,curses python 与 Windows 商店中的 Ubuntu 应用程序完美兼容。 - vgonisanz
    当我尝试完成这个任务时,出现了以下错误:Requirement 'curses-2.2-cp34-none-win32.whl' 看起来像是一个文件名,但该文件不存在。 curses-2.2-cp34-none-win32.whl 不支持此平台。 将失败的调试日志存储在 /home/fishe203/.pip/pip.log 中。这是什么意思?我该如何解决? - Jade Fisher
    1
    我使用Windows安装程序安装了Python,并从cmd中进行了测试。我不知道它是否适用于cygwin或类似的bash shell,但如果您使用cygwin安装Python并从那里安装whl,则可能会起作用。另一个选项(适用于Windows 10)是使用Linux子系统(Ubuntu,Fedora ...)和GNU / Linux工具。 - vgonisanz
    显示剩余3条评论

    18

    现在我们可以使用pip install windows-curses轻松地在Python 3.7上安装。


    9
    您可以尝试使用我制作的 unicurses 镜像,其中包括pdcurses dlls。我目前在 Windows 7 上使用 Python 3.5.0 成功运行它。
    若要快速测试它是否适用于您,只需克隆该存储库,并在其顶级目录中创建并运行一个包含以下内容的 Python 脚本即可。
    from unicurses import *
    stdscr = initscr()
    addstr("hello world")
    getch()
    

    我会在我的电脑上进行测试。 - Paebbels
    我不确定。但是我想修复一些东西,并且有一个github镜像。我已经通知了原作者关于我修复的事情,但我记不清是否收到了回复。 - chtenb

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