4

指が上がらないという奇妙な問題があります。私が使用している(そして時々貢献している)プログラムがあり、コンソール出力に色が付いています。Windowsを再インストールするまで、すべてがうまく機能しました。現在、カラー出力を取得できません。

これは、色付けに使用されるスクリプトです。

私は問題を多かれ少なかれ単純な状況に絞り込むことができましたが、何が悪いのかわかりません。

これは、期待どおりに機能するコンソールプロンプトです(文字列testは赤で印刷されます)。

Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.insert(0, r'c:\bin\SV\tea\src')
>>> from tea.console.color import cprint, Color
>>> cprint('test\n', Color.red)
test
>>>

しかし、同じバージョンのpythonで次のスクリプトを実行すると、出力は得られますtestが、赤い色ではありません(色はなく、デフォルトのコンソールの色だけです)。

import sys
sys.path.insert(0, r'c:\bin\SV\tea\src')

from tea.console.color import cprint, Color
cprint('test\n', Color.red)
  • システムを再インストールする前に、同じセットアップが機能しました。
  • 確認しましたが、インタラクティブモードとスクリプトの環境変数は同じです。
  • 私はこれを標準のWindowsコマンドプロンプトとコンソール、私が通常使用するプログラムで試しました。
  • 問題のOSはWindows8であり、再インストールする前に、これはWindows8でも使用されていました。
  • 同じセットアップの同じコードは、職場のコンピューター(Windows 7)で機能します。
  • Python2.7とPython3.3をインストールしています(以前と同じように)。Pythonインタープリターを直接(c:\Python27\python.exe)またはで呼び出してスクリプトを実行しようとしましpy -2たが、役に立ちません。
  • IPythonとmercurialは、出力を適切に色付けします。

この作品を作るために何を試みることができますか?

編集

はっきりしなかったかもしれませんが、出力を色付けするために使用するスクリプトは、問題のリンクに記載されています。ここにもう一度あります: https ://bitbucket.org/alefnula/tea/src/dc14009a19d66f92463549332a321b29c71d47b8/src/tea/console/color.py?at = default

4

1 に答える 1

4

問題と解決策を見つけました。

問題は x64 ctypes モジュールのバグだったと思います。私は Python 2.7 x64 をインストールし、そのバージョンの次の行を使用しました (問題としてリンクしたスクリプトから):

ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, code)

はエラー コード 6 を説明付きで返しますThe handle is invalid。調査の結果、問題は Python の x64 バージョンである可能性があると推測したため、32 ビット バージョンをインストールすると、すべてが期待どおりに動作します。

これで問題が解決し、より深い分析を行う時間がないので、このままにしておきます。質問に対して何らかの解決策を提供したかっただけです。

于 2013-02-24T16:48:42.443 に答える