Help us understand the problem. What is going on with this article?

iPythonの設定など

More than 3 years have passed since last update.

Windowsでipythonを使っているときに困っている点を解決しました。

WindowsPowerShellでiPythonを使いこなすためのちょっとした設定

ちょっとしたコードの確認や、捨てスクリプトを書いて実行するために、WindowsPowerShell上でiPythonを使うことがしばしばありますが、その際にカラースキームをなんとかできないかな?と思っていました。

具体的には、ある種のキーワードがPowerShellの「画面の色」設定とバッティングして見えなくなってしまうことがあるのです。
例えば、「in」が表示されなくなってしまいます。こんなに頻繁に使うキーワードなのに。

これは、Windows PowerShellのコンソールで設定されている背景の色と、iPythonのカラースキームで設定されている色が同じであることから起きている問題と思われます。

for x in range(100):
    ...

IMG_3104.PNG

また、グラフを描いて確認したい時にipythonを起動するときに「--matplotlib」を付け忘れることもしばしばあって、そのたびにそれまでに書いた捨てスクリプトを本当に捨ててしまってipythonを終了して再起動しなければならないことにも不満を感じていました。

iPythonに対する不満

  • Windows PowerShell上で使うと見えなくなる文字がある
  • 起動オプション「--matplotlib」を忘れがち

これらの不満を解決するためには、ipythonの起動時のデフォルト設定をきちんとしておく必要があります。

iPythonの設定ファイルの作成

iPythonの設定ファイルは、Windows PowerShell上で以下のようにコマンドを入力すると、環境変数%HOME%に設定されているフォルダに、「.ipython¥profile_default」というフォルダが作成され、そこに「ipython_config.py」「ipython_kernel_config.py」というファイルが作成されます。

PS C:¥Users¥user01> ipython profile create
[ProfileCreate] Generating default config file: 'c:¥¥Users¥¥user01¥¥.ipython¥¥profile_default¥¥ipython_config.py'
[ProfileCreate] Generating default config file: 'c:¥¥Users¥¥user01¥¥.ipython¥¥profile_default¥¥ipython_kernel_config.py'

以降は、このipython_config.pyを編集することで設定を変更できます。

カラースキームの変更

ipython_config.pyの183行目に、以下のような記載があります。

#c.InteractiveShell.colors = 'Neutral'

この先頭の「#」を削除した上で、NeutralをLinuxに変更します。残念ながら用意されているカラースキームは、「NoColor, Neutral, Linux or LightBG」のみらしいです。

c.InteractiveShell.colors = 'Linux'

これで下の図のように、キーワードinがちゃんと表示されるようになりました。

IMG_3106.PNG

308行目には、「#c.TerminalInteractiveShell.highlighting_style = traitlets.Undefined」というコメントアウトされた記述があり、ここにもhighlighting_styleが記載できるとされているっぽいのですが、307行目に例示されているようなスタイルを記載してみても、動作しませんでした。
Windows PowerShellではサポートされていないのかもしれません。

matplotlibの設定

iPythonをmatplotlibの機能付きで使うために、やはりipython_config.pyを設定します。

52行目に、次のようなコメントアウトされた行があります。

#c.InteractiveShellApp.matplotlib = None

この行頭の「#」を外して、次のように記載を変更します。

c.InteractiveShellApp.matplotlib = 'auto'

すると、--matplotlibを付けないで起動したiPython環境であっても、matplotlib.pyplotで定義された関数を使うと、グラフが表示されるようになりました。

from matplotlib import pyplot as plt
from numpy import random

plt.scatter(random.rand(10), random.rand(10))

IMG_3107.PNG

まとめ

iPythonの設定ファイルは、ipython profile createにより生成される。

生成されたipython_config.pyを編集することで、カラースキームを変更したり、matplotlibを呼び出した際に別Windowに画像等を表示することが可能になる。

fukuit
最近、事務系の職場に異動したので、職業プログラマではなくなりました。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away