2016-04-17 1 views
1

私はncursesを必要とする次のPythonパッケージを、使用したい:https://pypi.python.org/pypi/blessings私のWindows Pythonインストールで、Cygwinターミナル内で実行する際に使用できる余分なライブラリを認識させることはできますか?

私はアナコンダのPythonのWindowsのバージョンがインストールされている、と私の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 

さてを、そう何が起こっているかアナコンダPythonは当然Cygwinの呪いを拾っていないことです。

今、Cyacwin端末での使用のコンテキスト内でのみ、何とかAnacondaにncursesを認識させようとするのは理にかなっていますか?私はそうではないと思っています。概念的に何か不足していますか?

答えて

2

残念ながら、CPythonでCygwin Pythonのcursesモジュールを使用することはできません。

Windows Pythonは、CygwinのPythonがCygwinのPOSIXにリンクしている間に(Visual Studio 2008,2010または2015のCランタイムを使用して)Win32 APIを直接呼び出します(この2つのPythonのモジュールは互換性がありません) Visual Studio 6.0 Cランタイムの最上位にレイヤー化されたAPI。単一のプロセスで異なるCランタイムを混在させることは非常に悪い考えです。http://siomsystems.com/mixing-visual-studio-versions/は、POSIX APIを使って抽象化しても大丈夫です。

Cランタイムの違いにかかわらず、CygwinはLP64モデルを実装していますが、WindowsではLLP64モデルを実装しています。このモデルでは、64ビットサイズがlongになるため、構造が異なる可能性があります。とにかくコード内の#ifdefsの可能性が高いでしょう。

coloramaを使用できない理由はありますか? 祝福に関する文書は、それがうまくいくことを示唆しています。

+0

さて、「祝福」のために、cursesのようなものをインストールする必要があります。 'curses'がないので' blessings'をインポートできない場合、 'colorama'は重要ですか? – user89

+0

ええ、それはあなたが正しいようです。私は、Visual Studioを使って構築するためにncursesを移植することが、ここでの行動の最善の方法だろうと考えています。以前はUniCursesと呼ばれていたようですが、現代のWindows Console APIを使用していないPDCursesを使用していたので、気にしませんでした。しかし、Visual Studioにncursesを移植することは、恐ろしいことではありません。 –

関連する問題