今からお前んちこいよ

多摩川沿いにて細々とお勉強。

windows + cygwin で pyenv の環境構築

Linux, Mac ではコマンドだけで全て済むが、 Windowsの場合Cygwin上だと python-build が動かない。 なのでその部分($ pyenv install X.X.X - 指定バージョンのPythonをpyenvに配置)に関しては手動で行う。

pyenvの配置

Githubからリポジトリを落としてPATHを通すだけ。

# Cygwin上で
$ cd  
$ git clone https://github.com/pyenv/pyenv.git .pyenv     
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> .profile  
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> .profile  
$ echo -e 'eval "$(pyenv init -)"' >> .profile  
$ source .profile
$ pyenv versions
* system (set by /home/XXXXXXXXX/.python-version)

以下のエラーがでることがある。

/path/to/.pyenv/bin/pyenv: line 1: ../libexec/pyenv: No such file or directory

シンボリックリンクを貼るのに失敗しているのが原因。
貼り直してあげる。

$ cd
$ touch /bin/readlink  
$ rm -rf ~/.pyenv/bin/pyenv   
$ ln -s ~/.pyenv/libexec/pyenv ~/.pyenv/bin/pyenv  

再度動作を確認してみる。

$ pyenv versions
* system (set by /home/XXXXXXXXX/.python-version)

pyenv install X.X.X

python-build が使えれば $ pyenv install X.X.X でおわるのだが、
cygwinには手動で配置する以外方法が見当たらなかった。

2系

公式のインストーラから、インストールパスを指定して配置する。

Windows x86-64 MSI installer
https://www.python.org/downloads/release/python-2712/

インストール先を /path/to/.pyenv/versions/2.7.12 とし、実行。
指定のバージョンが指定の場所に配置されているか確認。
おそらくシンボリックリンクは貼られていないので、手動で貼る。

$ cd .pyenv/versions/2.7.12
$ mkdir bin && cd bin
$ ln -s ../python.exe python

動作を確認。

$ cd
$ pyenv local 2.7.12
$ pyenv versions
  system
* 2.7.12 (set by /home/XXXXXXXXX/.python-version)
$ python -V
Python 2.7.12

3系

2系と同様にインストーラを実行することも可能だが、
別の方法もある。
3系では embeddable file が配布されており、解凍して指定の場所に置くだけでも可。

Windows x86-64 embeddable zip file  
https://www.python.org/downloads/release/python-362/

解凍したフォルダを /path/to/.pyenv/versions/3.6.2 に移動。
おそらくシンボリックリンクは貼られていないので、手動で貼る。

$ cd .pyenv/versions
$ mv /path/to/python-3.6.2-embed-amd64 3.6.2
$ mkdir 3.6.2/bin && cd 3.6.2/bin
$ ln -s ../python.exe python

動作を確認。

$ cd
$ pyenv local 3.6.2
$ pyenv versions
  system
  2.7.12
* 3.6.2 (set by /home/XXXXXXXXX/.python-version)
$ python -V
Python 3.6.2

 

これで Windows + Cygwin で python環境を柔軟に使える。