Skip to content

Instantly share code, notes, and snippets.

@wakita
Last active December 15, 2023 04:04
Show Gist options
  • Save wakita/ec88547c5a2acd55268deca4d36a4ad0 to your computer and use it in GitHub Desktop.
Save wakita/ec88547c5a2acd55268deca4d36a4ad0 to your computer and use it in GitHub Desktop.
Python の仮想機械の作成・起動・保守を支援するスクリプト2点

venv.sh

Python の仮想機械の作成・起動・保守を支援するスクリプト2点

インストール方法

  • Gist の内容をダウンロード:どこか適切なディレクトリ(たとえば、$HOME/lib/sh/scripts)で以下を実行。

    git clone git@gist.github.com:ec88547c5a2acd55268deca4d36a4ad0.git venv

    Readme.mdvenv.sh が含まれているはず。

  • $HOME/.zshrcvenv.sh の内容を読み込むスクリプトを追加。たとえば、前の手順の例にしたがってダウンロードしたのであれば:

    . $HOME/lib/sh/scripts/venv/venv.sh

    ここで先頭の . を忘れないこと。

  • Python 仮想記憶にインストールするパッケージの情報を保存するディレクトリ ($HOME/lib/venv) を作成

    mkdir $HOME/lib/venv

使い方

新しい仮想機械を構成する(例: venv_sample

  1. $HOME/lib/venv/venv_sample.txt というテキストファイルに requrements.txt と同じ形式で必要とするパッケージのリストを記述する。たとえば、

    dash
    pandas
    plotly
    sklearn
  2. 仮想機械を構成するために venv venv_sample を実行する。「仮想機械 (venv_sample) が見つかりません。作りましょうか? (y/n)」と訊ねてくるので、y と答えると、$HOME/.venvs/venv_sample/ に新しい仮想機械が構成され、venv_sample.txt に記述したパッケージをインストールし、その仮想機械を起動する。

  3. 仮想機械を停止するときは通常どおり deactivate コマンドを使用する。

仮想機械を起動する: venv <仮想機械名>

たとえば、前の手順で作成した仮想機械であれば venv venv_sample で起動する。

仮想機械に新しいパッケージを追加するとともに、既存のパッケージを最新版に更新する

  1. $HOME/lib/venv/venv_sample.txt に新しいパッケージ名を追記する。

  2. pip-install コマンドを実行する

mkdir -p $HOME/.venvs
if [ "$DROPBOX" != "" -a -d "$DROPBOX" ]; then
VENV_REQUIREMENTS_DIR=$DROPBOX/lib/venv
else
VENV_REQUIREMENTS_DIR=$HOME/lib/venv
mkdir -p $VENV_REQUIREMENTS_DIR
fi
# Python's virtual environment system
venv() {
v="$HOME/.venvs/$1"
if [ ! -x $v ]; then
read -q "y?仮想機械 ($v) が見つかりません。作りましょうか? (y/n) "; echo
if [ "$y" = y ]; then python3 -m venv $v; fi
fi
source $HOME/.venvs/$1/bin/activate;
if [ "$y" = y ]; then
if [ -f $VENV_REQUIREMENTS_DIR/$1.txt ]; then
echo "仮想機械 ($v) を $VENV_REQUIREMENTS_DIR/$1.txt から構成しています。"
python -m pip install --upgrade pip wheel
pip install --upgrade --requirement $VENV_REQUIREMENTS_DIR/$1.txt
fi
fi
}
pip-install() {
v=`echo $VIRTUAL_ENV | sed -e 's/.*\///'`
echo $VIRTUAL_ENV $v
python -m pip install --upgrade pip wheel
pip install --upgrade --requirement $VENV_REQUIREMENTS_DIR/$v.txt
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment