30

IPythonでテキストの色をカスタマイズしたいのですが、その方法がわかりません。

Pythonでは、次のようなANSIカラーコードで終了sys.ps1してこれを実行できることを知っています。sys.ps2

sys.ps1=">>> \001\033[0m\033[34m\002"

ただし、を使用した対応するアプローチは、PromptManager.in_templateIPythonでは機能しません。例えば

c = get_config()
c.PromptManager.in_template = 'In [{count}] : {color.Blue}'

プロンプトの後のテキストの色には影響しません。

IPythonでテキストの色を変更する方法はありますか?

4

4 に答える 4

35

IPythonでの色付けと構文スタイル

~/.iphyton/ipython_config.pyまず、ホームディレクトリにipythonプロファイルを作成する必要があります。ipython_config.py。これを行う最も簡単な方法は、次のコマンドを実行することです。

ipython profile create

ipython3startを使用している場合

ipython3 profile create

profile_defaultこれにより、ディレクトリといくつかのスクリプトが~/.ipython;にインストールされます。それ以外の場合は、ファイルを見つけて〜/ .ipython /profile_default/ディレクトリにコピーします。

次のコマンドでこのファイルのバックアップを作成します。

cp ~/.ipython/profile_default/ipython_config.py \
   ~/.ipython/profile_default/ipython_config.py_backup

選択したテキストエディタでを開き、~/.ipython/profile_default/ipython_config.py次のsettigを検索して、必要に応じてコメントアウトします(「#」を削除します)。

  • c.InteractiveShell.color_info = True

  • c.InteractiveShell.colors = 'Linux'

  • c.TerminalInteractiveShell.highlighting_style = 'monokai'

  • c.TerminalInteractiveShell.highlight_matching_brackets = True

等々。デフォルトで無効になっている便利な設定がたくさんあります。コメントアウトするだけです( `#'を削除します)。

スタイルファイル

Ubuntu / Debianでは、pygmentsパッケージをインストールする必要があります

sudo apt install python3-pygments

また

sudo pip3 install pygments 

スタイルファイルは次のディレクトリにあります。

/ path / to / your / python / site-packages / pygments / styles /、例: /usr/lib/python3/dist-packages/pygments/styles/monokai.py

または、インストールされているスタイルをpygmentize次のように一覧表示することもできます。

pygmentize -L styles
于 2018-04-10T17:49:30.423 に答える
10

プロンプトは、入力の色を明示的にに設定colors.in_normalします。入力色を変更したい場合は、この色を変更する必要があります。

残念ながら、カスタマイズされた配色はまだToDoリストにあります(非常に簡単なはずですが、優先度は高くありません)。

設定ファイルの入力および/または出力テキストの色を変更する、あなたが望むように見えるもののややハックな例:

from IPython.utils import coloransi
from IPython.core import prompts

termcolors = coloransi.TermColors() # the color table
# IPython's two color schemes:
dark = prompts.PColLinux.colors
light = prompts.PColLightBG.colors

# colors.in_normal affects input code
dark.in_normal = termcolors.Green
light.in_normal = termcolors.Blue
# colors.normal affects output
dark.normal = light.normal = termcolors.Red

これにより、テキストの色がプロンプトと一致するように設定されますが、もちろん、好きなものを選択できます。

于 2013-01-04T22:03:08.950 に答える
9

警告:この回答はとのみ互換性がIPython 5.5.0あり、とはうまく翻訳されていないようですIPython 6+。(クイックテストのためのthx @meowsqueak!)

の時点で、ターゲットプロファイルフォルダ内のIPython 5.5.0おかげで、任意のスタイリングカラーを上書きできます。ipython_config.py(つまり、Linuxの一般的なインストールでのプロファイルの場合)~/.ipython/profile_defaultdefault

IPythonコードは、色付けに関連する非常に混乱しており、パーサー、デバッガー、インタラクティブシェルにはいくつかのメソッドが使用されます。一部は使用しPygments、その他は16色パレットに制限されたANSIエスケープコードを提供します。

解決策はきれいではありませんが、機能します。他にもっときれいな方法があれば、コメントで教えてください!。

私のソリューションには、デフォルトパレットの拡張のおかげで、IPythonカラーリングのすべての部分に256色以上を使用する機能も含まれていることに注意してください。次のコードには、256色に拡張する方法の例があります。

使用される可能性のあるすべてのトークンのリストを使用して、次の方法を実行します。

##
## Basic color scheme that will be modified
##

colorLabel = 'Linux'
c.InteractiveShell.colors = colorLabel


from pygments.token import Token, Keyword, Name, Comment, String, Error, \
     Number, Operator, Generic, Whitespace

c.TerminalInteractiveShell.highlighting_style_overrides = {

    ## Standard Pygments tokens (are all used by IPython ?)

    Whitespace:                "#bbbbbb",
    Comment:                   "italic #008800",
    Comment.Preproc:           "noitalic",
    Comment.Special:           "noitalic bold",

    Keyword:                   "bold #AA22FF",
    Keyword.Pseudo:            "nobold",
    Keyword.Type:              "bold #00BB00",

    Operator:                  "#666666",
    Operator.Word:             "bold #AA22FF",

    Name.Builtin:              "#fff", #""#AA22FF",
    Name.Function:             "#00A000",
    Name.Class:                "#0000FF",
    Name.Namespace:            "bold #0000FF",
    Name.Exception:            "bold #D2413A",
    Name.Variable:             "#B8860B",
    Name.Constant:             "#880000",
    Name.Label:                "#A0A000",
    Name.Entity:               "bold #999999",
    Name.Attribute:            "#BB4444",
    Name.Tag:                  "bold #008000",
    Name.Decorator:            "#AA22FF",

    String:                    "#BB4444",
    String.Doc:                "italic",
    String.Interpol:           "bold #BB6688",
    String.Escape:             "bold #BB6622",
    String.Regex:              "#BB6688",
    String.Symbol:             "#B8860B",
    String.Other:              "#008000",
    Number:                    "#666666",

    Generic.Heading:           "bold #000080",
    Generic.Subheading:        "bold #800080",
    Generic.Deleted:           "#A00000",
    Generic.Inserted:          "#00A000",
    Generic.Error:             "#FF0000",
    Generic.Emph:              "italic",
    Generic.Strong:            "bold",
    Generic.Prompt:            "bold #000080",
    Generic.Output:            "#888",
    Generic.Traceback:         "#04D",

    Error:                     "border:#ff0000",

    ## IPython

    Token.Number: '#ffffff',
    Token.Operator: 'noinherit',
    Token.String: '#8b8',
    Token.Name.Function: '#2080D0',
    Token.Name.Class: 'bold #2080D0',
    Token.Name.Namespace: 'bold #2080D0',
    Token.Prompt: '#ffffff bold',
    Token.PromptNum: '#888888 bold',
    Token.OutPrompt: '#008b8b bold',
    Token.OutPromptNum: '#006b6b bold',
}


from IPython.core import excolors, ultratb, debugger
from IPython.core.excolors import exception_colors as exception_colors_orig

##
## Add new color labels here before attributing them
##


from IPython.utils import coloransi

coloransi.color_templates = (
    # Dark colors

    ("Black"       , "0;30"),
    ("Red"         , "0;31"),
    ("Green"       , "0;32"),
    ("Brown"       , "0;33"),
    ("Blue"        , "0;34"),
    ("Purple"      , "0;35"),
    ("Cyan"        , "0;36"),
    ("LightGray"   , "0;37"),

    # Light colors
    ("DarkGray"    , "1;30"),
    ("LightRed"    , "1;31"),
    ("LightGreen"  , "1;32"),
    ("Yellow"      , "1;33"),
    ("LightBlue"   , "1;34"),
    ("LightPurple" , "1;35"),
    ("LightCyan"   , "1;36"),
    ("White"       , "1;37"),

    ## 256-colors

    ("Green108", "38;5;108"),
)

coloransi.make_color_table(coloransi.TermColors)
coloransi.make_color_table(coloransi.InputTermColors)

for name, value in coloransi.color_templates:
    setattr(coloransi.NoColors, name, '')


C = coloransi.TermColors
IC = coloransi.InputTermColors


def exception_colors():

    ex_colors = exception_colors_orig()

    ex_colors.add_scheme(coloransi.ColorScheme(
        colorLabel,

        # The color to be used for the top line
        topline=C.LightRed,

        # The colors to be used in the traceback
        filename=C.Green,
        lineno=C.DarkGray,
        name=C.Purple,
        vName=C.Cyan,
        val=C.White,
        em=C.LightCyan,

        # Emphasized colors for the last frame of the traceback
        normalEm=C.LightCyan,
        filenameEm=C.Green,
        linenoEm=C.Normal,
        nameEm=C.LightPurple,
        valEm=C.LightGreen,

        # Colors for printing the exception
        excName=C.Red,
        line=C.Yellow,
        caret=C.White,
        Normal=C.Normal
    ))
    return ex_colors

excolors.exception_colors = exception_colors
ultratb.exception_colors = exception_colors
debugger.exception_colors = exception_colors


##
## Parser color (source code colors)
##

from IPython.utils import PyColorize
import token
import tokenize

PyColorize.ANSICodeColors[colorLabel] = coloransi.ColorScheme(
    colorLabel, {
        'header'         : C.LightRed,
        token.NUMBER     : C.LightCyan,
        token.OP         : C.Normal,
        token.STRING     : C.Green108,
        tokenize.COMMENT : C.LightGray,
        token.NAME       : C.Normal,
        token.ERRORTOKEN : C.Red,

        PyColorize._KEYWORD         : C.White,
        PyColorize._TEXT            : C.Yellow,

        ## Keep IC here, you can use other colors

        'in_prompt'      : IC.Green,
        'in_number'      : IC.LightGreen,
        'in_prompt2'     : IC.Green,
        'in_normal'      : IC.Normal,  # color off (usu. Colors.Normal)

        'out_prompt'     : C.Red,
        'out_number'     : C.LightRed,

        'normal'         : C.Normal  # color off (usu. Colors.Normal)
})
于 2018-01-26T03:26:57.160 に答える
2

Ipythonで色を変更する簡単な方法:

  1. IPython構成ファイル(ipython_config.py)を、通常は~/.ipython/profile_default/またはで開きます( ~/.ipython/profile_<your_usrname>/IPythonプロファイルを使用している場合)。

  2. 設定を見つけてコメントを外す(または変更する)c.InteractiveShell.colors

  3. 利用可能なカラースキーマの1つに変更すると、コメントにすべてリストされていることがわかります- NoColor、、、、またはNeutralLinuxLightBG

  4. 設定ファイルを保存してIPythonを起動します

構成ファイルが表示されない場合は、次のコマンドを使用してすばやく生成できます。

ipython profile create [profilename]

デフォルト設定で設定ファイルを生成し、必要に応じて編集できます。

于 2020-03-19T15:29:57.113 に答える