singularityでubuntu20.04+python(+pipenv)環境を構築
はじめに
pythonは仮想環境が豊富なので、わざわざコンテナ化する必要ある?って思っていましたが、 いざGPUクラスタ上で動かすときに環境構築ハマったので、そのとき作成したpythonを動かすコンテナをSingularity Libraryに公開しました。
構成
が入ってます。
使い方
以下のsingularity libraryで公開しました。
実行方法
python_pyenv
というsandboxを作成する例-w
オプションをつけることでpip
やapt
などを使って外部ライブラリをインストールできる
sandbox作成
singularity build --sandbox python_pipenv library://tmyoda/default/ubuntu-pyenv:20.04
shellに入る
その他run, execも可 (過去記事参照)
singularity shell -w --nv python_pipenv
.defファイル
man apt によると apt(8) ではなく apt-get(8) をスクリプトで使用するよう推奨されているため、defファイル等のスクリプトでインストールを動かす場合はapt-get
を使用した方が良いみたいです。
Bootstrap: docker From: ubuntu:20.04 %environment export LC_ALL=C.UTF-8 export Lang=C.UTF-8 export PIPENV_VENV_IN_PROJECT=1 export PATH="/usr/local/opt/openssl/bin:$PATH" # pipenv property # export PIPENV_SKIP_LOCK=1 # pyenv export PYENV_ROOT="/pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" %post # Change if you want INSTALL_PYTHON_VERSION=3.7.9 apt-get update # 依存関係 DEBIAN_FRONTEND=noninteractive apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ xz-utils tk-dev libffi-dev liblzma-dev python3-distutils \ openssl git bzip2 vim bash-completion git clone https://github.com/pyenv/pyenv.git ${PYENV_ROOT} export PYENV_ROOT="/pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" # python setting pyenv install ${INSTALL_PYTHON_VERSION} pyenv global ${INSTALL_PYTHON_VERSION} # pipenv pip install -U pip pip install pipenv # clean up apt-get clean rm -rf /var/lib/apt/lists/* %labels Author tmyoda Version v1.0.0
ローカルでこの.defから.sifを作成する方法は過去記事に書きましたので、そちらを参照してください。