cygwinからanacondaのpythonコマンドをたたく


windowsでanaconda入れると、CUIはAnaconda Prompt(実質コマンドプロンプト)になるじゃないですか。
そんなの嫌だ!Linuxのコマンド使いたい、cygwin使いたい!って人向け(主に自分)の需要の少なそうな覚書です。

1. anacondaにパスを通す

cygwinの.bash_profileを編集する。
こういう感じ

.bash_profile
ANA_PATH=/cygdrive/c/Anaconda3
export PATH=\$ANA_PATH:\$ANA_PATH/Library/bin:\$ANA_PATH/Scripts:$PATH

これで

$ which python
/cygdrive/e/OSS/Anaconda3/python

anacondaのpythonにパスが通った。

が、これでpythonを叩くと応答が返ってこない…

$ python

cygwinのterminalであるminttyっていうexeがネイティブのpython以外のpythonをたたくと固まるという既知のバグなんだそうです。

2. winpty入れる

なので、mintty.exeの代わりにwinpty.exeというものを入れて、cygwinのterminalをラップしてやる必要がある。
https://github.com/rprichard/winpty
からgit clone。
解凍先にcd してcygwinでmakeする。

$ git clone https://github.com/rprichard/winpty.git
$ cd winpty
$ ./configure
$ make

正常に完了すれば、winpty/buildにconsole.exe、winpty.dll、winpty-agent.exeができる

※ 予めcygwinでgit, make, gcc-g++, mingw64-x86_64-gcc-g++ などなどをインストールしておく

3 pythonコマンドをラップ

~/.bashrcを編集
winptyのインストール先が$GITだとすると

.bashrc
alias 'python'='$GIT/winpty/build/winpty.exe python'
alias 'ipython'='$GIT/winpty/build/winpty.exe ipython'

これで!anacondaのpythonをcygwinから叩けるようになりました。

$ python
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 10:22:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

※参考:http://suzukiyou.hatenablog.com/entry/20151209/1449622689