HomeBrewでPython入れてたけどtoxとか使ってると、pythonの各バージョンが必要になってくるけどこれまで使ってたHomeBrewだと複数のバージョンが管理できない。pyenvは使わない機能が多すぎるしややこしいのでもっとシンプルに管理出来るツールを作った
- githubに移した https://github.com/c-bata/pymanage
aodag先生の管理のしかた を真似してみる。
/opt
以下にPythonをインストール/usr/local/bin/
にシンボリックリンクをはる- マイナーバージョンまでの部分までのコマンドがPATHに含まれる
他の定番ツールだと多分 pyenv だけど、ちょっと何してるのかよく分からない上にPyCharm使ってると必要ないなって思える機能(globalとかlocalとか)も多いので、もっとシンプルに扱える管理コマンドが欲しい。 他の理由としては、個人用途で使ってるサーバ環境にわざわざpyenv入れたくはないけど、色んなバージョンは使えるようにしておきたい。 これはシェルスクリプト1つなので、wgetして実行権限つけるだけでいい。
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel readline-devel tk-devel
yum install -y python-devel gcc wget
sudo apt-get install build-essential python3-dev python3-pip
for v in 2.6.9 2.7.10 3.3.6 3.4.3 3.5.0
do
sudo pymanage install $v
sudo pymanage link $v
done
fork先の子プロセスでvirtualenvをactivateしてそれを親プロセスに反映させるみたいなことは出来ないから、シェル関数として登録しておいてforkせずに使う必要があるらしい。.bashrc
に↓を登録した。
## workon function like virtualenv wrapper
WORKON_HOME=${WORKON_HOME:-$HOME/.virtualenvs}
workon() {
if [ $# -ne 1 ]; then
for env in $(ls -d ${WORKON_HOME}/*/); do
basename ${env}
done
elif [ -d ${WORKON_HOME}/${1} ]; then
source ${WORKON_HOME}/${1}/bin/activate
fi
}
pyenvよくわからなかったけどとりあえず
.pyenv/versions
の中にinterpreterがちゃんと入ってた。READMEによるとここにPATHを通している。.pyenv/shims
は謎ディレクトリThrough a process called rehashing, pyenv maintains shims in that directory to match every Python command across every installed version of Python—python, pip, and so on.
所感
.pyenv
内で上手くやってくれてる。今後