是否有可能让我的Windows Python安装知道在Cygwin终端内运行时可以使用的额外库?

时间:2016-04-17 18:38:39

标签: python cygwin anaconda

我想使用以下Python包,这需要ncurseshttps://pypi.python.org/pypi/blessings

我安装了Windows版本的Anaconda Python,并指定为我的Python发行版。 我也有一个Cygwin安装。当我在提供的Cygwin终端中运行python -i时,Anaconda Python启动 - 太棒了!

如果我尝试import blessings,我会收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "A:\anaconda\lib\site-packages\blessings\__init__.py", line 5, in <module>
    import curses
  File "A:\anaconda\lib\curses\__init__.py", line 15, in <module>
    from _curses import *
ImportError: No module named _curses

好吧,所发生的事情是,Anaconda Python可以理解的是没有接受Cygwin的诅咒。

现在,尝试以某种方式使Anaconda知道ncurses,只有在Cygwin终端的使用环境中才有意义吗?我怀疑它不是,我在概念上遗漏了什么?

1 个答案:

答案 0 :(得分:2)

遗憾的是,您无法在CPython中使用Cygwin Python的curses模块。由于以下原因(以及更多),两个Pythons的模块不兼容:

Windows Python直接调用Win32 API(通过Visual Studio 2008,2010或2015 C-Runtimes),而Cygwin Python链接到Cygwin POSIX API,该API位于Visual Studio 6.0 C-Runtime之上。在一个进程中混合使用不同的C-Runtimes是一个非常糟糕的主意:http://siomsystems.com/mixing-visual-studio-versions/,更不用说通过POSIX API进一步抽象了。

无论C-Runtime差异如何,Cygwin都实现了LP64模型,而Windows实现了LLP64模型,这将使​​每个模块之间的64位大小Buckingham Pl, Eight Mile Plains QLD 4113, Australia不同,因此某些结构的大小可能不同。无论如何,它们很可能是由于代码中的#ifdefs。

你有什么理由不能使用colorama吗? 祝福文件表明应该有效。