こんにちは。パパスです。
今回はpythonの仮想環境の作成方法について紹介していきます。
仮想環境とは?
作業の前に仮想環境について簡単に説明します。
仮想環境はアプリ・システム開発用に作る一時的なPythonの実行環境です。
例えば、アプリAではPython 3.7、アプリBではPython 3.9といった感じでPythonやその他モジュールの異なったバージョンをそれぞれの環境で使い分けることができるようになります。
仮想環境を使わずともアプリの開発はできますが、アプリBを開発したためにアプリAが動かなくなるかもしれないリスクがあります。(Python 3.9へバージョンを上げたことによる影響)
他の環境に影響を与えることなく好き勝手にでき、失敗しても削除できるので仮想環境を作ることをおすすめします。
仮想環境の構築手順
作業用ディレクトリの作成
作業用にディレクトリを作成します。
任意の場所で構いません。今回はworkというディレクトリを作成しました。
仮想環境の作成
ターミナルで先程作成した作業用ディレクトリへ移動します。
$ cd work
下記コマンドを入力し、仮想環境を作成します。
# フォーマット
$ python -m venv [仮想環境ディレクトリ名]
# 実行例
$ python -m venv .venv
.venvは仮想環境のディレクトリ名のため、お好きな名前で大丈夫です。
以下のコマンドで仮想環境ができたか確認します。
$ ls -a
.venv
無事に作成されていますね。
今回は仮想環境のディレクトリ名の先頭に .
を付けたため-a
を付けていますが、先頭に .
を付けていなければ ls
だけで確認できます。
仮想環境に切り替え
作成した仮想環境に切り替えてみましょう。
# フォーマット
$ source [仮想環境ディレクトリ名]/bin/activate
# 実行例
$ source .venv/bin/activate
(.venv) $
先頭に(仮想環境ディレクトリ名)が表示されれば切り替え成功です。
この状態でpipでパッケージをインストールすれば仮想環境にだけ導入することができます。
仮想環境の終了
仮想環境を終了するには以下のコマンドを実行します。
(.venv) $ deactivate
$
先頭の(仮想環境ディレクトリ名)が消えれば成功です。
仮想環境のPythonのバージョンについて
仮想環境のPythonのバージョンはどうやって決めるの?と思う方がいるかもしれません。
仮想環境のバージョンは以下のコマンドで表示されたバージョンと同じものになります。
$ python -V
Python 3.9.1
$ source .venv/bin/activate
(.venv) $ python -V
Python 3.9.1
僕の環境では3.9.1であったため、仮想環境も3.9.1の環境ができています。
バージョンを変えたい場合、pyenvで使用するPythonのバージョンを変更する必要があります。
pyenvの導入については以下の記事を参照ください。
Pythonのバージョンを確認してみます。
$ pyenv versions
system
3.6.10
* 3.9.1 (set by /Users/papas/.pyenv/version)
3.6.10があったので、これで仮想環境 work2 を作成してみます。
# Pythonのバージョンを変更
$ pyenv global 3.6.10
# バージョン確認
$ pyenv versions
system
* 3.6.10 (set by /Users/papas/.pyenv/version)
3.9.1
$ python -V
Python 3.6.10
# 仮想環境作成
$ cd work2
$ python -m venv .venv2
$ source .venv2/bin/activate
(.venv2) $ python -V
Python 3.6.10
Python 3.6.10の仮想環境work2が作成されました。
念のため、初めに作成したworkのバージョンを確認してみます。
# 仮想環境workの確認
(.venv2) $ deactivate
$ cd ../work
$ source .venv/bin/activate
(.venv) $ python -V
Python 3.9.1
変わらず3.9.1ですね。これで2パターンPythonの環境ができました。
仮想環境の削除
仮想環境の削除は簡単です。
仮想環境ディレクトリ(.venvなど)を削除すればOKです。
おわりに
お疲れ様でした。
個人の学習用途であれば、仮想環境の構築までは不要かもしれません。
仕事ではバージョンを指定されることもあるので、そのようなことを想定して仮想環境で開発できるようにしておきましょう!