ししちにじゅうはち 4x7=28

よんたったー https://twitter.com/keita44_f4

2016年4月のWindows+msys2+Emacsでうまく動くPython環境について

Windowsのいろいろうまく動くPythonのインストールにむっちゃ苦労したのでメモしておく

動かしたいもの

  • Python2.7(できればPython3.4も)
  • Emacs + pyflakes(flycheckすごい便利)
  • Emacs + pep8(自動でコーディングルールを整えるのすごい便利)
  • matplotlib(グラフプロットするGUIライブラリ)
  • scipy(計算ライブラリ)

それぞれ試したものとまとめ

  • Anaconda
    • WindowsGUIやpyflakesが問題なく動く
    • 複数のPython環境を管理できる
  • canopy
    • WindowsGUIやpyflakesが問題なく動く
    • 無償版だとライブラリが少ない
  • msys2のpacman -S msys/python3とpip
    • LinuxにあるblasライブラリがWindowsに無いため辛い
    • pyflakesをEmacsから呼ぼうとすると、Windowsパスとmsysパスの違いのせいでうまく動かない
  • msys2のpacman -S mingw-w64-x86_64-python3とpip
    • openblasはpacmanで入れれる
    • やっぱりpyflakesがEmacsから呼べない
  • 公式Pythonバイナリとpip
    • Windows用バイナリなのに、scipyでblasライブラリで同様にこける

うまくいった環境

Anacondaのダウンロード
condaコマンドで欲しいライブラリをいれる
  • conda install ***
condaに無いものはpipで入れる
  • pip install ***
EmacsPython環境をつくる
msys2やEmacsのPATHの設定
  • Anacondaのパスを追加
    • [AnacondaPath]/Anaconda3と[AnacondaPath]/Scriptsと[AnacondaPath]/Library/binの3つ
    • condaのactivate/deactivateを使うのならば、[AnacondaPath]/envs/[envname]と[AnacondaPath]/envs/Scriptsと[AnacondaPath]/envs/[envname]/Library/binを使えば良い
    • path書き換えるコマンド作ってもよい

未解決の問題

  • matlibplotを使ったPythonコードをquickrunすると、一定時間後に「QObject::killTimers: timers cannot be stopped from another thread」を吐いてmatlibplotで表示したGUIが落ちる
  • 【追記】quickrunはタイムアウト時間を設定してあるせい。「quickrun-timeout-seconds」を負数にすればタイムアウト設定をOFFにできる。