こんにちは、えびかずきです。
今回はvenvの仮想環境をコピーして使う方法について説明します。
結論として、同じPythonバージョンで新規環境を作ったのちに『requirements.txt』でpip installを実行という流れが最もスマートです。
開発環境
OS:MacOS Catalina 10.15
venv仮想環境のコピー方法
1.コピー元の仮想環境をアクティブ化する。
$ source <仮想環境パス>/bin/activate
2.コピー元の仮想環境のPythonバージョンを確認する。
(仮想環境)$ python --version
Python 3.X.Y
3.コピー元の仮想環境のパッケージ情報を抽出する。
(仮想環境)$ pip freeze > requirements.txt
4.コピー元の仮想環境を終了する。
(仮想環境)$ deactivate
5.確認したコピー元のPythonバージョンを起動する。
※venv仮想環境はライブラリなどのパッケージだけでなく、Python自体も含みます。
仮想環境の新規作成時には、ターミナルで起動しているpythonバージョンを持っていくことになるので、使いたいバージョンをあらかじめ起動しておく必要があります。
※下はpyenvを使用している場合の例。
#現在の使用バージョンを確認(後で戻すため)
$ python --version
python 3.X.Z
#コピー元の仮想環境を起動(同一バージョンならば操作不要)
$ pyenv global 3.X.Y
pyenvについて:
pyenvによるPythonバージョンの使い分けについては、以下のインストール方法を含めて記事で紹介していますので、必要な方は参考にしてください。
pyenvとvenvでPython環境を使い分ける方法【Mac版】
6.コピー先の新規仮想環境を作成
$ python -m venv <仮想環境名>
#pythonバージョンを元に戻す(同一バージョンならば操作不要)
$ pyenv global 3.X.Z
7.コピー先の新規仮想環境をアクティブ化
$ source <新規仮想環境パス>/bin/activate
8.コピー先の仮想環境へpipでパッケージをまとめてインストールする。
(コピー先の仮想環境)$ pip install -r requirements.txt
これで仮想環境のコピーは完了です、お疲れ様でした。
仮想環境のフォルダをコピペするだけだと…
仮想環境のフォルダをコピペして名前だけ変えたら使えるのでは?と思う方もいるかもしれませんがそれはできません。
なぜならフォルダの名前を変えても結局使用するファイルが同じなので、元の開発環境を使うことになってしまうからです。
環境をアクティブ化する時に『$ source <仮想環境パス>/bin/activate』とコマンドを打つことからも分かるとおり『activate』というファイルの中身が同じなので、結局前の環境を使うことになってしまうというわけです。
まとめ
今回は仮想環境のコピー方法について説明しました。
Pythonの開発で一つだけライブラリのバージョンを変えたいけど、もとの環境は残しておきたいというような場合がしばしばあると思います。
そんなときは、この仮想環境のコピーを活用してみてください。
参考サイト
下記の記事を参考にさせていただきました。
コメントを書く