MacにPython環境を構築してDjangoでHello worldまでの流れ(Pyenv, Poetryを利用)

MacにPython環境を構築してDjangoでHello worldまでの流れ(Pyenv, Poetryを利用)

December 28, 2020

タイトルにある作業を今回実施しました。ただ、環境構築が一度完了してしまうと、同じことを再度実施する機会はそれほどないです。作業時にせっかく調べて理解したことも、同じ作業をする機会がないとだんだん記憶が抜けていき、次に環境構築をすることになったときにはまたゼロ知識の状態からスタート………では悲しいので、とりあえずこのブログにメモしておきます。

前提 #

  • 環境
    • macOS Catalina
  • mac にインストールされている前提のもの
    • Homebrew
  • 本記事の中でインストールするもの
    • Pyenv
    • (Pyenv 経由で)python3.9
    • Poetry
    • (Poetry 経由で)Django

作業の流れ #

  1. (事前確認)現在利用中の python のバージョン確認
  2. Pyenv のインストールおよび、python のインストール
  3. Poetry のインストール
  4. Django プロジェクトの作成

1. 現在利用中の python のバージョン確認 #

(ただの確認作業なので実施しなくても問題ありません。)

ターミナルを開いて下記コマンドを打ち、現在利用している python のバージョンを確認してみましょう。

python --version

mac デフォルトでインストールされている状態から python を更新していない場合、

Python 2.7.16

などと返ってくるのではないかと思います。

2. Pyenv のインストールおよび、Python のインストール #

Homebrew で Pyenv をインストールします。Pyenv は python のバージョン管理をしてくれるものです。複数バージョンの python を切り替えて使用することができます。Ruby でいう rbenv、JS(node.js)でいう nvm や nodebrew、PHP でいう phpbrew です。

brew install pyenv

次に Pyenv 経由で python をインストールします。まずはインストール可能な python の一覧を表示します。

pyenv install --list

Available versions: が表示されます。ここでは 3.9.0 をインストールします。

pyenv install 3.9.0

インストール後、Pyenv で管理しているバージョン一覧を表示します。

pyenv versions

以下のような結果が返るはずです。「*」のついているバージョンが現在使用しているバージョンを表しています。system についているということは、mac のデフォルト(つまり最初に確認した 2.7.16)を使っているということを意味しています。

* system
  3.9.0

python のバージョンを切り替えます。

pyenv global 3.9.0

次に以下を実行。

pyenv init

すると、

# Load pyenv automatically by appending
# the following to ~/.zshrc:

eval "$(pyenv init -)"

と言われるので、「.zshrc」(ホームディレクトリにあります。なければ新規作成で。)に以下の記載を追加します。場所はどこでも良いですが、私は末尾追加しました。

eval "$(pyenv init -)"

これでようやくバージョンが切り替えられたはず。ターミナルを一度閉じて、再び新規ターミナルを開き直します。その後以下を実行してバージョン確認。

pyenv versions

3.9.0 に切り替わったことが確認できました。

  system
* 3.9.0

3. Poetry のインストール #

Poetry は python のパッケージ管理をしてくれるものです。python デフォルトのパッケージ管理ツールとして pip というものがありますが、pip ではパッケージ間の依存関係の管理や、プロジェクトごとの python のバージョン管理はできません。それをやってくれるのが Poetry です。

Poetry は、Ruby でいう Bundler、JS(node.js)でいう npm や yarn、PHP でいう Composer にあたるものです。

他言語では、パッケージ管理ツールといえばコレといったデファクトスタンダードがあるのですが、python の場合は乱立状態となっていて、決まったものがありません。

少し前までは Pipenv というものがよく利用されていましたが、現在は Poetry が主流になりつつあるため、こちらをインストールします。

なお、Poetry の公式サイトは右記です:https://python-poetry.org/

日本語訳版もあります:https://cocoatomo.github.io/poetry-ja/

Poetry は(python をインストールしたときにデフォルトで同梱されている)pip でもインストールできますが、公式サイトでは非推奨とされています。

公式では curl を使って直接ダウンロードする方法が推奨されていますが、私は Homebrew で管理したいため、Poetry も Homebrew 経由でダウンロードします。

brew install poetry

Poertry がインストールできたら、Poetry の設定を確認します。

poetry config --list

(この設定は好みですが)virtualenvs.in-project が null や false となっている場合は、以下を実行して true に設定を変えることをお勧めします。

poetry config virtualenvs.in-project true

これは Poetry で作るプロジェクトの仮想環境をどこに作成するのかという設定ですが、null や false になっていると、 /Users/[username]/Library/Caches/pypoetry/virtualenvs というところに作られます。設定を true に変えることで、各プロジェクトのディレクトリにこれを作ってくれるようになります。そのプロジェクトに関する仮想環境設定は、そのプロジェクトのディレクトリに置いたほうがわかりやすいと思いますので、設定の切り替えをお勧めします。

4. Django プロジェクトの作成 #

プロジェクトのディレクトリを作ります。デスクトップなりお好きな場所で以下を実行。

mkdir project_x

プロジェクトのディレクトリに移動。名称は任意です。

cd project_x

Poetry を init します。

poetry init

対話型でいろいろ聞かれますが、ひたすら return キーを押下すれば OK.

次に Django をインストールします。

poetry add django

ここで作られたファイルを確認してみます。

ls -a

そうすると、「.venv」と「poetry.lock」と「pyproject.toml」ができているはずです。(virtualenvs.in-project の設定が true でない場合、「.venv」はここには作られません)

つぎに Django のプロジェクトを作成します。(細かい部分ですが、コマンドの最後の「.」を忘れないように)

poetry run django-admin startproject project_x .

「manage.py」というファイルと、「project_x」というディレクトリが作成されているはずです。

最後に、サーバを起動して Hello world ページを確認しましょう。サーバの起動には以下のコマンドを実行します。

poetry run python manage.py runserver

ブラウザで http://localhost:8000/ にアクセスすると、ページが表示されているはずです。

Django | Hello world!

以上 #

以上で終わりです。

さらに別の Django プロジェクトを作りたい時は「4. Django プロジェクトの作成」だけをやれば OK です。

あとはアプリを作るだけ!