LoginSignup
1
3

More than 3 years have passed since last update.

venvを利用してPythonの仮想環境を構築する(Django + MySQL①)

Last updated at Posted at 2020-08-26

この記事について

この記事は、「Django + MySQLの環境構築を通じてDockerの使い方を学ぶ」に関連する記事群の Part.1 にあたります。

  1. venvを利用してPythonの仮想環境を構築する ( 当記事 )
  2. Dockerfileの記述を考える
  3. docker-compose.ymlの記述を考える
  4. 設定ファイルを編集し docker-compose up を実行する
  5. 依存関係にあるサービス間のコンテナ立ち上げタイミングを調整する

はじめに

この記事ではまず、venvを利用してPython3の仮想環境を構築します。

PyenvでホストPCに準備した任意のバージョンのPython3を元に、特定のプロジェクト向けの仮想環境をvenvで作成します。
目的は、プロジェクト単位でPythonのバージョンを管理できるようにすることと、pipによるパッケージ群のインストールを 効率/軽量 化することです。

この記事では Python3.7.7 を利用します。

Pythonを準備する

# Python 3.7.7 のインストール
$ pyenv install 3.7.7

# 利用する Python3 のバージョンを 3.7.7 にする
$ pyenv global 3.7.7

# バージョン確認
$ python3 --version
Python 3.7.7

仮想環境の作成

プロジェクト用のディレクトリを作ってから、その中に仮想環境を作成します。

# プロジェクト用ディレクトリの作成
$ mkdir django_starter

# ディレクトリの移動
$ cd django_starter

# 仮想環境の作成
$ python3 -m venv .venv

コマンド末尾の.venvはパス名です。ここでは慣例にそって.venvとしましたが、お好みでディレクトリをはさんで階層を深くしたり、好きな名前をつけたりしてももちろん大丈夫です。

続いて、仮想環境を有効化し、有効化を確認します。

# 有効化
$ source .venv/bin/activate

# 「 どこにある Python を使っている状態か 」 確認してみる
(.venv) $ which python
()/django_starter/.venv/bin/python

shellのユーザー名の前に先ほどつけた仮想環境名が表示されていれば、有効化されていることが確認できます。プロジェクト内に配置された仮想環境のパスに、このプロジェクトのためのPython3が配置されていて、それを使っていく、というイメージで捉えています。ちなみに、

$ deactivate

と実行するだけで、仮想環境から出ることができます。

パッケージのインストール

仮想環境内のpipを使って、必要なパッケージをインストールします。
この記事群の目的で使うことが確定しているものを、いくつか事前にインストールしておきます。

# インストール
(.venv) $ pip install django==3.0.8 mysqlclient==2.0.1 pathlib==1.0.1

# インストールされているパッケージの確認
(.venv) $ pip freeze

次に、これらを元にrequirements.txtを作成します。

(.venv) $ pip freeze >> requirements.txt

中身はこんな感じになっているはずです。

requirements.txt
asgiref==3.2.10
Django==3.0.8
mysqlclient==2.0.1
pathlib==1.0.1
pytz==2020.1
sqlparse==0.3.1

今後は、環境を共有する際やコンテナ内に環境をコピーする際、このファイル内の記述を元にインストールを行なっていくことになります。($ pip install -r requirements.txt)

Djangoプロジェクトを作成する

次回からDocker関連ファイルの設定を行なっていきますが、その前にDjangoのプロジェクトを作成しておきます。

(.venv) $ pwd
()/django_starter

(.venv) $ django-admin startproject config .

もちろんコマンドで生成するディレクトリの名前はなんでもいいのですが、個人的に親ディレクトリと同名だと混乱してしまうタイプなのでconfigにしておきます。
.は作成場所のパス指定です。

現時点でのディレクトリ構成

django_starter
    ├── config
    │     ├── __init__.py
    │     ├── asgi.py
    │     ├── settings.py
    │     ├── urls.py
    │     └── wsgi.py
    ├── manage.py
    ├── .venv
    │   └── ()
    └── requirements.txt

終わりに

仮想環境を利用することで、プロジェクトに関係のないパッケージのインストールを回避し、必要なものだけを管理できるようになります。同様に、このプロジェクトでしか使わないようなものがあっても、ローカルのメイン環境(?)を汚さずに済み、とてもいい感じです。

これを、続いて実践に入るコンテナ内の環境構築に利用します。

次の記事では、Dockerfileの記述について考えていきます。
続きはこちら↓
「 2. Dockerfileの記述を考える

ご覧いただきありがとうございました。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3