Pythonで開発用の仮想環境を構築
今回はプログラム言語のPythonの話です。
筆者は最近は趣味の範囲ではありますが、
Pythonでちょこちょこと個人の作業用のツールだったり、
ビットコインの収集と解析での開発にPythonを利用しています。
このPythonの仮想環境について、これまでその存在自体はある程度知っていましたが、
自分の開発ではあまり意識していませんでした。
ところが先日、ManjaroLinux環境に自前のsystemdサービスを追加する際、
気が付きました。
“Build a virtual environment for development with Python!!“
というのも、systemdで動かすということはrootユーザでの実行になります。
Pythonでは各種のライブラリやフレームワークが多く出ているのが魅力なのですが、
そのライブラリのバージョンや依存するライブラリもあって複雑な互換性が出るケースもあります。
単一のユーザで使っていてさえ、
なぜかライブラリをバージョンアップできなくなったり、
他のライブラリの依存性で動作しなくなることもあります。
そうです、今回はsystemdとして、
つまりrootでpythonアプリを動かす際になって初めて、
仮想環境という必要性を感じました。
というわけで、前置きが長くなりましたが、
今回はPythonでの「仮想環境の作り方」、「仮想環境への入り方」、
「仮想環境の終了の仕方」について筆者の作業記録を振り返りつつ、
紹介していきます。
Pythonでの仮想環境の作り方
以下コマンドを実行します。
$ python -m venv .testenv
ここで少し待ちます。プロンプトが出れば完了です。
Pythonでの仮想環境への入り方
以下コマンドを実行します。
$ source .testenv/bin/activate
すると、左に(.testenv)と表示されます。
これで仮想環境に入ったことになります。
ここで以下コマンドでpipのリストを確認してみます。
$ python -m pip list
はい、2つのpackageしか表示されませんね。
しかもpipが古いですと言われています。
やはり別世界に入っていますね。
Pythonの仮想環境を終了させる
それでは、仮想環境から出てみます。
以下コマンドを打ち込みます。
$ deactivate
はい、(.testenv)のワールドから戻れましたね。
ここでpip listを出してみます。
再度以下コマンドを実行します。
$ python -m pip list
たくさん表示されました。
これで先程の仮想環境は他のpackageライブラリの
影響を受けない環境だということがわかりました。
これ、試してみてからはいいなと思うようになりました。
まだ使ったことなかった方は使ってみてください。
では、シェルから仮想環境に入ってスクリプト実行するには?
となると思いますが、以下で実現できました。
#!/bin/bash
source /opt/.testenv/bin/activate
python samplepj1/sample.py
deactivate
何かの参考になれば幸いです。