今回はPython3で仮想環境を構築するためにvenvという機能を使って行こうと思います。
venv(virtual environment)とは、Python3.3から追加されたPythonパッケージです。
Python3.4までは、pyenvというPythonバージョン仮想管理ツールが推奨されていましたが、Python3.5以降ではvenvが推奨されています。
では何を仮想環境上で構築するかというと、Python外部パッケージのpipというパッケージ管理ライブラリを管理するための環境を構築します。
pipパッケージ管理ライブラリでは様々なパッケージ(ライブラリやツール)をインストールすることができますが、それらインストールしてきたパッケージは日々バージョンアップが繰り返されています。
開発しているソフトで、古いままのパッケージを使用したい場合もあったり、開発している環境ごとにパッケージを管理したい場合もあるかと思います。
そんな時に、仮想環境として構築することができます。
他にも仮想環境の構築では、VirtualEnvやcondaという便利なツールがあるので、興味のある方は調べてみてください。
実行環境 |
---|
Windows Subsystem for Linux |
Python 3.6.8 |
まずpipをインストールします。
Python3系のpipをインストールするため以下のように指定します。
$ sudo apt install python3-pip
Python3.3以降のバージョンであれば既にvenvは標準パッケージとなっているので、確認をしてみましょう。
# ターミナル内でインストールされているパッケージの確認
$ dpkg -l
ii python3.6 3.6.7-1~18.04 amd64 Interactive high-level object-oriented
ii python3.6-dev 3.6.7-1~18.04 amd64 Header files and a static library for
ii python3.6-minima 3.6.7-1~18.04 amd64 Minimal subset of the Python language
ii python3.6-venv 3.6.7-1~18.04 amd64 Interactive high-level object-oriented ←ここ
もしもパッケージが見当たらない場合は以下のようにインストールします。
$ sudo apt install python3-venv
それではいよいよ仮想環境を構築していきます。
さっそく仮想環境を構築したいところですが、現在いる場所(ディレクトリ)で作成するのではなく、テスト用もしくわPython用に作成しているファルダ内で仮想環境を作成していくことをお勧めします。
作成したいフォルダ内で右クリックしプロパティを開いて絶対パスをコピーします。
絶対パスをコピーしたらターミナルにてシンボリックリンクを作成します。
シンボリックリンクとは、お気に入り登録のように簡単にそのディレクトリ(フォルダ)にアクセスすることができるようになります。
# 私はWSLなのでWindowsパスをUbuntuパスに変換させています
$ wslpath 'C:\Users\warik\Documents\python3'
/mnt/c/Users/warik/Documents/python3
# Ubuntuに置き換えたpython3のフォルダを、
# シンボリックリンクとして作成します
$ ln -s /mnt/c/Users/warik/Documents/python3 python3
# python3が作成されているか確認
$ ls
python3
続いて仮想環境を作成します。先ほどシンボリックリンクで作成したディレクトリに移動してそのディレクトリ下(フォルダ内)で仮想環境フォルダを作成します。
# 移動
$ cd python3
# vpy3という仮想環境フォルダを作成します
/python3$ python3 -m venv vpy3
python3 -mとすることでvenvを使う事が出来ます。
実際にフォルダが作られているはずです。
vpy3というフォルダが仮想環境になるわけですが、実際使い始めるにはそのフォルダへ移動し仮想環境を有効にする必要があります。
# ファルダを移動し有効にする
/python3/vpy3$ source bin/activate
# 先頭に(vpy3)となっていれば有効になっています
(vpy3) /python3/vpy3$
# ちなみに(.)でも有効になります
/python3/vpy3$ . bin/activate
# 無効にする場合
(vpy3) /python3/vpy3$ deactivate
ひとまず仮想環境を構築することができました。次に仮想環境内でpipを使いパッケージを便利に管理する手順を見て行きましょう。
まず仮想環境内にてパッケージの確認をします。
(vpy3) /python3/vpy3$ pip3 freeze
pkg-resources==0.0.0
では試しに好きなパッケージをインストールしてみましょう。
(vpy3) /python3/vpy3$ pip3 install flask requests pillow
各パッケージがインストールされているかを確認し、インストールされたパッケージをテキストファイルに保存していきます。
# パッケージの確認
(vpy3) /python3/vpy3$ pip3 freeze
# パッケージをテキストに納める
(vpy3) /python3/vpy3$ pip3 freeze > vpy3pip.txt
# テキストがあるか確認
(vpy3) /python3/vpy3$ ls
bin include lib lib64 pyvenv.cfg share vpy3pip.txt
テキストとして管理しておくことによって、誤ってバージョンアップしてしまった場合や他の仮想環境下へ同じパッケージを映したい場合などに役立ちます。
vpy3環境で構築されているパッケージを他の仮想環境下へインストールする例を見て行きましょう。
新しくcloneという仮想環境を作り、先ほどpipでパッケージを納めたテキストをcloneディレクトリ内へコピーします。
# コピー
/python3$ cp vpy3/vpy3pip.txt clone/
# 移動して確認します
/python3/clone$ ls
bin include lib lib64 pyvenv.cfg share vpy3pip.txt
確認できましたら仮想環境を有効にし、テキスト内に納められたパッケージを一括インストールします。
# 有効
/python3/clone$ source bin/activate
# pipの-rオプションで一括インストール
(clone) /python3/clone$ pip3 install -r vpy3pip.txt
パッケージの管理は開発者にとって大事な仕事の1つです。例えばあるパッケージのバージョンアップによって定義されていたメソッドが廃止されシステムが動かなくなるといったことも起こります。
ですので使っているバージョンもしっかり把握するためにもどんどん仮想環境を構築していきましょう。
それでは以上になります。
最後まで見て頂きありがとうございます。