Cygwin + Anaconda + conda env

Windows (not cygwin)にインストールしたAnaconda (4.1.1)をCygwinzshでやろうとすると、初めいい感じにconda envが使えなかったのでメモ。もしかしたらAnacondaのバージョン上げたり、Cygwin上にAnacondaインストールすると動くかもしれない。

コマンドプロンプトとかPowerShell使えよ

コマンドプロンプトは動作キモいし、PowerShellはlsが常に-lオプションと同じ結果がでるのが嫌。

めんどいことをしたくないとき

cmderをインストールして、activate 環境名するとそのまま使える。mintty上では挙動が怪しいインタプリタも普通に使える。

なんとかできた方法

Cygwinbash.exeでsource activate 環境名とすると、何も出力がないし、環境も切り替わらない。zsh.exeでやると以下のエラーがでる。

Traceback (most recent call last):
  File "D:\Anaconda\Scripts\conda-script.py", line 5, in <module>
    sys.exit(main())
  File "D:\Anaconda\lib\site-packages\conda\cli\main.py", line 48, in main
    activate.main()
  File "D:\Anaconda\lib\site-packages\conda\cli\activate.py", line 105, in main
    shelldict = shells[shell]
KeyError: 'zsh.exe'

とりあえず、D:\Anaconda\Lib\site-packages\conda\cli\activate.pyにあるactivate.pyのエラー箇所をみると、conda.utilsパッケージのshellsにzsh.exeがないからエラーがでてるらしい。

そもそもの話、D:\Anaconda\Scripts\activateのファイルで、conda ..activateが実行されてるだけなので、そこをゴニョゴニョしてもいいかも知れない。 私はutils.pyのif sys.platform == "win32":以下のshellsに直接、

"zsh.exe": dict(
    unix_shell_base,
    exe="zsh.exe",
    binpath="/Scripts",
    path_form=cygwin_path_to_win,
    path_to=win_path_to_cygwin
),

を追加した。zsh.exeのプロンプトに環境名がでないけど、一応Pythonの実行ファイルは切り替わった。

感想

普通にcmder + bashで良いと思う。

追記(公開2分後)

pip切り替わってなかった。