PipenvでPythonの仮想環境を作るメモ
注意 ※バージョンや環境によっては正常に動作しない可能性があります。
Pythonを勉強用に使う時に環境を作ると、その時々で使いたいライブラリを闇雲にインストールしてしまって、別のプロジェクトを立ち上げた時に、良くわからないエラーで悩まされたりします。
そういったことを防ぐために、各アプリごとに仮想環境を作っておくと便利です。
今回はPipenvでPythonの仮想環境を作る方法をメモしておきます。pipenvの細かいコマンドなどは別枠で記事にするとして、とりあえずの環境を作ることが記事の目的です。
PythonはPCにインストールされている、という前提です。
OSはwindows10で、どこにでもある普通のPCに勉強用の仮想環境を作る、というのが目的です。
Pipenvのインストール
Pipenvのインストールは簡単です。
コマンドからpip install pipenvとすると関連する他のパッケージと一緒にインストールしてくれます。
C:\Users\ユーザー名>pip install pipenv Collecting pipenv Downloading pipenv-2020.8.13-py2.py3-none-any.whl (3.9 MB) |████████████████████████████████| 3.9 MB 2.2 MB/s Collecting virtualenv Downloading virtualenv-20.0.31-py2.py3-none-any.whl (4.9 MB) |████████████████████████████████| 4.9 MB 3.3 MB/s Collecting virtualenv-clone>=0.2.5 Using cached virtualenv_clone-0.5.4-py2.py3-none-any.whl (6.6 kB) Requirement already satisfied: setuptools>=36.2.1 in c:\python_venv\saigen-test\.venv\lib\site-packages (from pipenv) (49.2.1) Requirement already satisfied: pip>=18.0 in c:\python_venv\saigen-test\.venv\lib\site-packages (from pipenv) (20.1.1) Collecting certifi Using cached certifi-2020.6.20-py2.py3-none-any.whl (156 kB) Collecting appdirs<2,>=1.4.3 Using cached appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB) Collecting six<2,>=1.9.0 Using cached six-1.15.0-py2.py3-none-any.whl (10 kB) Collecting filelock<4,>=3.0.0 Using cached filelock-3.0.12-py3-none-any.whl (7.6 kB) Collecting distlib<1,>=0.3.1 Using cached distlib-0.3.1-py2.py3-none-any.whl (335 kB) Installing collected packages: appdirs, six, filelock, distlib, virtualenv, virtualenv-clone, certifi, pipenv Successfully installed appdirs-1.4.4 certifi-2020.6.20 distlib-0.3.1 filelock-3.0.12 pipenv-2020.8.13 six-1.15.0 virtualenv-20.0.31 virtualenv-clone-0.5.4
appdirs, six, filelock, distlib, virtualenv, virtualenv-clone, certifi、というパッケージが一緒にインストールされます。
Pipenvのアンインストール
アンインストールする場合は、pip install pipenvとするとできます。
C:\Users\ユーザー名>pip uninstall pipenv Found existing installation: pipenv 2020.8.13 Uninstalling pipenv-2020.8.13: Would remove: c:\users\ユーザー名\appdata\local\programs\python\python38-32\lib\site-packages\pipenv-2020.8.13.dist-info\* c:\users\ユーザー名\appdata\local\programs\python\python38-32\lib\site-packages\pipenv\* c:\users\ユーザー名\appdata\local\programs\python\python38-32\scripts\pipenv-resolver.exe c:\users\ユーザー名\appdata\local\programs\python\python38-32\scripts\pipenv.exe Proceed (y/n)? y Successfully uninstalled pipenv-2020.8.13
一度確認が入り、yを押すと削除できます。
ただ、一緒にインストールされている他のパッケージはアンインストールされていません。Pipenvのみが削除されます。
以下はPipenvをアンインストールした環境を、pip listで確認した内容です。
Package Version ---------------- --------- appdirs 1.4.4 asgiref 3.2.10 certifi 2020.6.20 distlib 0.3.1 Django 3.1.1 filelock 3.0.12 pip 20.1.1 pytz 2020.1 setuptools 49.2.1 six 1.15.0 sqlparse 0.3.1 virtualenv 20.0.31 virtualenv-clone 0.5.4 wheel 0.34.2
appdirs, six, filelock, distlib, virtualenv, virtualenv-clone, certifiがそのまま残っています。
仮想環境にPythonをインストール
Pipenvをインストールしたら、次は仮想環境を作ります。
デフォルトのインストール先は、C:\Users\ユーザー名\.virtualenvs\になっているようでして、できればプロジェクト内に作りたいところです。
なので、まずはソースコードを保存するフォルダを作ります。
今回は「python-venv」というフォルダ内に「test-site」というフォルダを作ります。
この「test-site」フォルダ内に、仮想環境を作ります。
C:\Users\ユーザー名>cd C:\python_venv\test-site C:\python_venv\test-site>set PIPENV_VENV_IN_PROJECT=true C:\python_venv\test-site>pipenv --python 3.8
cdはコマンドラインでディレクトリを移動する際に使うものです。
先ほど作ったフォルダに移動します。
「set PIPENV_VENV_IN_PROJECT=true」は環境変数を指定するコマンドです。
「PIPENV_VENV_IN_PROJECT=true」として、コマンドを実行したフォルダにインストールするという設定をオンにしています。この環境変数を設定することで、コマンドを実行した場所に仮想環境を作ることができます。
注意点ですが、SETを使って環境変数の値を設定すると、その設定が有効になるのは、SETを実行したコマンドプロンプト内だけになります。
なので、新しいコマンドラインを開いて、そこでインストールする場合は、再度setコマンドを実行する必要があります。
「pipenv –python 3.8」というコマンドでPythonを仮想環境にインストールします。今回はバージョン3.8をインストールしています。この数値を変えることで、各バージョンのPythonをインストールすることが可能です。
このコマンドを実行すると、「C:\python_venv\test-site\.venv」として、作成したフォルダ内に「.venv」という隠しフォルダとして作成されます。
PCに入っているバージョンならば、そのままインストールできます。
PCに入っていないバージョンは、pyenvを使っていれば、自動で入れてくれます。入ってないと以下のようにエラーがでます。
C:\python_venv\test-site>pipenv --python 3.6 Warning: Python 3.6 was not found on your system… Neither 'pyenv' nor 'asdf' could be found to install Python. You can specify specific versions of Python with: $ pipenv --python path\to\python
asdfって何?と思ったのですが、いろんな言語のバージョンを管理できるツールがあるんですね~。公式は以下です。
インストールされているか確認をします。
「pipenv shell」とコマンドを実行することで、仮想環境のシェルを起動することができます。
C:\python_venv\test-site>pipenv shell (.venv) C:\python_venv\test-site>
仮想環境を起動すると、場所の前にその環境名が表示されます。
仮想環境のshellでバージョンを確認すると、インストールしたバージョンが表示されます。
(.venv) C:\python_venv\test-site>python --version Python 3.8.3
これでインストールされていることが確認できます。
仮想環境の削除
C:\python_venv\test-site>pipenv --rm
削除する場合は「pipenv –rm」コマンドになります。
これをしても、PipfileとPipfile.lockは残ります。
シェルの起動
C:\python_venv\test-site>pipenv shell (.venv) C:\python_venv\test-site>
「pipenv shell」とするとシェルを起動することができます。
この状態で「pip list」でパッケージを確認すると以下になります。
(.venv) C:\python_venv\test-site>pip list Package Version ---------- ------- pip 20.1.1 setuptools 49.2.1 wheel 0.34.2
この記事を書いている時点ですとこれがデフォルトの状態のようですね。
PCでPythonをインストールしたときに、pipを含めてインストールしているのですが、その影響でpipが入っているのか、pipenvでインストールすると必ず入るのかは不明です。
シェルを終了する場合はexitと入力すると終了します。
(.venv) C:\python_venv\test-site>exit
他のライブラリをインストールする
様々なライブラリを仮想環境だけにインストールすることができます。
今回は有名なフレームワークのDjangoをインストールします。
C:\python_venv\test-site>pipenv install django Installing django… Adding django to Pipfile's [packages]… Installation Succeeded Pipfile.lock not found, creating… Locking [dev-packages] dependencies… Locking [packages] dependencies… Locking...Building requirements... Resolving dependencies... Success! Updated Pipfile.lock (a6086c)! Installing dependencies from Pipfile.lock (a6086c)… ================================ 0/0 - 00:00:00 To activate this project's virtualenv, run pipenv shell. Alternatively, run a command inside the virtualenv with pipenv run.
「pipenv install ライブラリ名」でインストールできます。バージョン指定は「django==」で指定します。
今回のdjangoは特に指定せずにインストールしているため、最新版がインストールされています。
また、仮想環境に初めてライブラリをインストールしたので、この段階でPipfile.lockが作られています。
Pipfile.lockは、インストールしたバージョンが記録されるファイルです。
このファイルを使用することで、全く同じ環境を簡単に構築することができます。
以下が、インストール後の仮想環境でのpip listの実行結果です。
(.venv) C:\python_venv\test-site>pip list Package Version ---------- ------- asgiref 3.2.10 Django 3.1.1 pip 20.1.1 pytz 2020.1 setuptools 49.2.1 sqlparse 0.3.1 wheel 0.34.2
Djangoと、それに付随するライブラリがインストールされています。
このような形で、独立した環境を作ることができます。
まとめ
pipenvのインストール
- pipenvのインストール⇒pip install pipenv
- pipenvのアンインストール⇒pip uninstall pipenv
仮想環境にPythonをインストール
- pipenvのインストール先用環境設定⇒set PIPENV_VENV_IN_PROJECT=true
- Pythonのインストール⇒pipenv –python 3.8
- Pythonのバージョン確認⇒python –version
- 仮想環境の削除⇒pipenv –rm
pipenvの基本操作
- pipenvのシェル起動⇒pipenv shell
- pipenvのシェル終了⇒exit
- pipenvのパス確認⇒pipenv –venv
- ライブラリインストール⇒pipenv install django ==3.1.1
pipenvの操作はまだまだ細かくたくさんあります。
「pipenv -h」コマンドで、オプションやコマンドの一覧が確認できます。
行き詰った時はヘルプを見て確認するのが良いでしょう。
Pipenv shellで仮想環境を実行しないでPythonのファイルを起動すると、自身のPCに作られている元の環境で動作します。
何度も同じ手順をするのはめんどくさいので、ひな形になるPipfile.lockを1つ作っておいて、そこから環境を作るのが楽かな~と思います。