転職活動終了からずっと放置していたLaravel(PHPフレームワーク)で作ったポートフォリオをDjango(Pythonフレームワーク)に移行したときの学習備忘録です。
なお、Windows10の使用ノートPC、VScodeで基本的に作業してます。
①開発環境を整える
とりあえず、以下の方法で私用PCのLinuxにPoetryやPythonのインタープリターをインストールしました。
また、その後以下のコマンドで、Linux(厳密には筆者はUbuntu)上にDjangoをインストールしました。
wsl
$ sudo apt install python3-django
②雛形を作る
VScodeでDjango版ポートフォリオを作成するフォルダ(今回はDjangoes)を開き、以下のコマンドを入力
wsl
django-admin startproject django_portfolio
入力した時点で以下のフォルダ構成で雛形ができました。
Djangoes(フォルダ)
|
|__django_portfolio(フォルダ)
|
|--django_portfolio(フォルダ)
| |--__init__.py(初期化処理を行うスクリプトファイル)
| |--asgi.py(ASGIという非同期Webアプリケーションのためのプログラム)
| |--settings.py(プロジェクトの設定情報を記述するファイル)
| |--urls.py(プロジェクトで使うURLを管理するファイル)
| |--wsgi.py(WSGIというWebアプリケーションのプログラム)
|
|--manage.py(このプロジェクトで実行する機能に関するコマンドなどが記述されている)
③上記の雛形にPoetryを導入する、pyproject.tomlの作成
#wsl起動したまま
cd ~\Djangoes\django_portfolio
かVScodeでDjangoes直下のdjango_portfolioフォルダに作業フォルダを移動後、以下のコマンドを使いました。
#wsl起動したまま
$ poetry init
このコマンドを使うと、Pythonプロジェクトの設定や依存関係を管理するためのpyprojec.tomlというファイル(requirements.txtとvenvを合体させたようなもの)の設定に関するメッセージが以下のように出たので、以下のように設定しました。(※入力してEnterすると随時メッセージが出てきます。)
※どのように設定するのが最適解かは理解が進み次第追記します。
This command will guide you through creating your pyproject.toml config.
#このコマンドは、pyproject.toml 構成の作成をガイドします。
Package name [~]:👈Poetryを導入するプロジェクト名を記述(※「~」と同じにしました)
Version [~]:👈プロジェクトに適用するPoetryのバージョン(※「~」と同じにしました)
Description []:Poetryを適用するプロジェクトがどのようなプロジェクトか記述??(※省略可能)
Author [None, n to skip]:👈プロジェクト作成者名??(※ n で省略しました)
License []:??(※省略可能)
Compatible Python versions [^3.~]:インタープリターとして用いるPythonのバージョンを指定(※3.x.yのyは省略可能)
#互換性のあるPythonのバージョン
Would you like to define your main dependencies interactively? (yes/no) [yes] 👈yesでEnterすると追加したい物の名前を聞かれます
#主な依存関係を対話的に(インタラクティブシェルで)定義しますか?
Search for package to add (or leave blank to continue):👈追加する外部ライブラリー・パッケージ名(※省略可能)
#追加するパッケージを検索します(または空白のままにして続行します)
Would you like to define your development dependencies interactively? (yes/no) [yes]👈yesでEnterすると追加したい物の名前を聞かれます
#開発依存関係を対話的に(インタラクティブシェルで)定義しますか?
Search for package to add (or leave blank to continue): 👈追加する外部ライブラリー・パッケージ名(※省略可能)
Generated file
#以下、こういう感じのpyprojec.tomlを作りますというメッセージが出ます。
Do you confirm generation? (yes/no) [yes] #おそらく「これで大丈夫ですか」的な意味
👆yesとするとGenerated file以下に提示されたpyprojec.tomlが以下の場所にできます。
Djangoes(フォルダ)
|
|__django_portfolio(フォルダ)
|
|--django_portfolio(フォルダ)
|--manage.py(このプロジェクトで実行する機能に関するコマンドなどが記述されている)
|--pyprojec.toml👈開けるとGenerated file以下に提示された内容が載っています
なお、上記のQiitaにも書いたようにLinuxにPythonの各インタープリターをあらかじめ入れておくと、pyenvで切り替えなくとも(ある程度)使用するPythonのインタープリターが切り替えられます。なお、各プロジェクトで使用しているインタープリターは次のコマンドでも確認できます
wsl
poetry env info
④Poetryを導入した上記の雛形に外部ライブラリー・パッケージを入れ直す・追加する
なぜかはまだ全然分かっていないですが上記の順番を辿った段階では、pyprojec.tomlにdjangoに関する情報は載っていません。
そのため、再度djangoパッケージをPoetryで入れ直します。
wsl
$ poetry add django
#poetry add 外部ライブラリー名・外部パッケージ名
※入力すると、pyprojec.toml の以下の部分が追記されるとともに、poetry.lockというファイルが以下の場所にできます。
[tool.poetry.dependencies]
python = "^3.〇" 👈③のpyproject.tomlの作成時に指定したバージョンが書かれています。
Django = "^〇.△.▢" 👈〇.△.▢はバージョンの数字
Djangoes(フォルダ)
|
|__django_portfolio(フォルダ)
|
|--django_portfolio(フォルダ)
|--manage.py(このプロジェクトで実行する機能に関するコマンドなどが記述されている)
|--pyprojec.toml
|--poetry.lock
なお、
wsl
$ poetry new 新規プロジェクト名
で作り始めると、pyproject.toml、poetry.lock、testフォルダ・pytestも一緒に生成されますが、上記のこれまでの方法だとpytest及びtestフォルダは生成されないので、
$ poetry add pytest
で同様にインストールして、testフォルダをpyprojec.tomlやpoetry.lock等と同じ階層に作りました。
⑤開発用サーバーを動かしてみる
今回あくまで使用しているインタープリターは個人Linux上にあるので、相変わらずwslを入力した状態でさらに以下のコマンドを入力します(※作業フォルダは動かすプロジェクトにしておく。今回で言うとDjnagoesフォルダ直下のdjango_portfolioフォルダ)
wsl
$ python3 manage.py runserver
入力して出てくるメッセージ内の中に
Starting development server at http://127.0.0.1:8000/
とあれば、とりあえず開発用サーバーは動いていて「http://127.0.0.1:8000/」
にアクセスすると以下のデフォルト画面が出てきました。また開発用サーバーを起動した段階でdb.sqlite3ファイルがpyproject.toml、poetry.lockと同じ階層に自動的にできました。
そのときのターミナルの様子
プロジェクトのデフォルトの初期画面
主な参考資料
①Python Django 4 超入門 掌田津耶乃(著) 秀和システム
②[初心者向け] Poetry入門!インストール方法から使い方、コマンド、パッケージの管理方法まで徹底解説 @shun198 さん Qiita
https://qiita.com/shun198/items/97483a227f288ad58112#pyprojecttoml%E3%81%A8poetrylock
③Poetry公式ドキュメント
https://python-poetry.org/docs/basic-usage/