Windowsでipythonを使っているときに困っている点を解決しました。
WindowsPowerShellでiPythonを使いこなすためのちょっとした設定
ちょっとしたコードの確認や、捨てスクリプトを書いて実行するために、WindowsPowerShell上でiPythonを使うことがしばしばありますが、その際にカラースキームをなんとかできないかな?と思っていました。
具体的には、ある種のキーワードがPowerShellの「画面の色」設定とバッティングして見えなくなってしまうことがあるのです。
例えば、「in」が表示されなくなってしまいます。こんなに頻繁に使うキーワードなのに。
これは、Windows PowerShellのコンソールで設定されている背景の色と、iPythonのカラースキームで設定されている色が同じであることから起きている問題と思われます。
for x in range(100):
...
また、グラフを描いて確認したい時に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
がちゃんと表示されるようになりました。
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))
まとめ
iPythonの設定ファイルは、ipython profile create
により生成される。
生成されたipython_config.pyを編集することで、カラースキームを変更したり、matplotlibを呼び出した際に別Windowに画像等を表示することが可能になる。