Skip to content

Instantly share code, notes, and snippets.

@c-bata
Last active January 31, 2018 04:12
Show Gist options
  • Save c-bata/bdabbd9fde110579b18c to your computer and use it in GitHub Desktop.
Save c-bata/bdabbd9fde110579b18c to your computer and use it in GitHub Desktop.
pymanage: Simple python interpreter manager.

HomeBrewでPythonを入れるのをやめる

HomeBrewでPython入れてたけどtoxとか使ってると、pythonの各バージョンが必要になってくるけどこれまで使ってたHomeBrewだと複数のバージョンが管理できない。pyenvは使わない機能が多すぎるしややこしいのでもっとシンプルに管理出来るツールを作った

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

virtualenv wrapper

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
}
@c-bata
Copy link
Author

c-bata commented Oct 25, 2015

1ヶ月ぐらい使ってみてブログで宣伝してみる

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment