2017-02-15 9 views
3

コンソールカラーリングをサポートするアプリケーションの通常のルールは、現在のコンソールがTTYの場合にアクティブにすることです。色付けを有効にするためにPythonで擬似コンソールを検出する方法は?

このメソッドは、擬似コンソール用のTTYを開かないため、(Jenkins、Travisなどの)継続的な統合サーバーでは機能しません。

これらの2つの場合を区別することが可能である場合、私は疑問に思って:ジェンキンス下

  • mycommand実行 - 私たちは
  • mycommand >> output.logを着色有効にする - 私たちはANSIで終わるしたくありませんログファイルでエスケープします。

私の古いANSI検出コード:

import sys 
import os 

if (hasattr(sys.stderr, "isatty") and sys.stderr.isatty()) or \ 
    ('TERM' in os.environ.keys() and os.environ['TERM'] in ['linux']) or \ 
    ('PYCHARM_HOSTED' in os.environ.keys()): 
    coloring = True 

が、私はこの問題に対処するために、これを改善することはできますか?

答えて

2

すでに環境変数PYCHARM_HOSTEDを使用しているので、CI環境に類似のものを使用することをお勧めします。あなたは特にジェンキンスとトラビスについて言及しました。どちらのシステムも、使用できる環境変数を設定します。

JENKINS_URL Set to the URL of the Jenkins master that's running the build. 
BUILD_URL The URL where the results of this build can be found. 
BUILD_TAG String of jenkins-${JOB_NAME}-${BUILD_NUMBER}. 

Source

トラヴィス環境変数:

CI=true 
TRAVIS=true 
CONTINUOUS_INTEGRATION=true 

Source

いくつかの可能性が...

ジェンキンス環境変数です

関連する問題