python開発のためのWSL環境構築[bash/django/git]

WSL環境の構築

Windowsの場合はLinuxディストリビューションを仮想的に動作させるWSLというものが存在する。インストール方法は下記リンク先の「WSLをMicrosoft Store経由でインストールする」を参照するとわかりやすい。ディストリビューションは現時点ではUbuntu22.04 LTSを使用するのが良いだろう。

ホームディレクトリ上にワークスペースを構成する

ibismark@ibismark-win:~$ mkdir -p workspace # 開発作業スペース 
ibismark@ibismark-win:~$ mkdir -p downloads # ダウンロードファイルの一時スペース
ibismark@ibismark-win:~$ mkdir -p library   # ライブラリスペース
ibismark@ibismark-win:~$ mkdir -p bin       # 自分で作成したカスタムコマンドスペース
ibismark@ibismark-win:~$ tree -d -L 1 ~/
/home/ibismark/
├── bin
├── downloads
├── library
└── workspace

4 directories

ログイン時のカスタム環境変数の設定

Ubuntuを起動するとログインシーケンスが始まる。
ホームディレクトリ上にはbashの初期化ファイルが存在しており、.profile -> .bashrcの順にロードされる。これらのファイルはユーザー自身でカスタム可能だ。ディストリビューションによって初期化ファイルの構成は異なるので注意しよう。
.profileにはログイン時の処理を、.bashrcにはbash起動時の処理を書くのが良い。大体のものは.profileに書けば良いだろう。

ibismark@ibismark-win:~$ ls -al ~/
-rw-r--r--  1 ibismark ibismark  4057 Feb  9 22:50 .bashrc
-rw-r--r--  1 ibismark ibismark  1122 Feb  8 02:15 .profile
・・・
ibismark@ibismark-win:~$ 


# 環境変数の設定
ibismark@ibismark-win:~$ vi ~/.profile
・・・
export L_WORKSPACE="$HOME/workspace"
export L_LIBRARY="$HOME/library"
export L_BIN="$HOME/bin"
export PATH="$L_BIN:$PATH"
・・・
ibismark@ibismark-win:~$ source ~/.profile
ibismark@ibismark-win:~$ cd ${L_WORKSPACE}
ibismark@ibismark-win:~/workspace$ pwd
/home/ibismark/workspace

python環境を構築する

pythonのインストール

pyenvを使ってpython(ver 3.12.1)をインストールしていく。
pyenvはpythonのバージョン管理ツールで、インストールした複数のpythonバージョンを相互に簡単に切りかえることができる。pyenvを通してpythonのインストールもできるので楽で良い。

ibismark@ibismark-win:~$ git clone https://github.com/pyenv/pyenv.git ${LIBRARY}/pyenv
ibismark@ibismark-win:~$ vi ~/.profile
・・・
export PYENV_ROOT="$D_LIBRARY/pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
・・・
ibismark@ibismark-win:~$ source ~/.profile
ibismark@ibismark-win:~$ 
ibismark@ibismark-win:~$ 
ibismark@ibismark-win:~$ sudo apt update
ibismark@ibismark-win:~$ sudo apt install python3-pip
ibismark@ibismark-win:~$ sudo apt install build-essential libssl-dev libreadline-dev libbz2-dev libffi-dev libncurses5-dev libsqlite3-dev liblzma-dev -y
ibismark@ibismark-win:~$ pyenv install 3.12.1
ibismark@ibismark-win:~$ pyenv global 3.12.1
ibismark@ibismark-win:~$ python --version 
Python 3.12.1
ibismark@ibismark-win:~$ 

Djangoの初期プロジェクトの作成

Django(5.0.2)をインストール

pythonのパッケージマネージャであるpipでインストールするのだが、対象を今回のプロジェクト内に留めておきたいのでvenvを利用した仮想環境上で作業する。
※otamっていうのはテスト用のコードネーム。

ibismark@ibismark-win:~$ mkdir -p workspace/otam # 今回のプロジェクト用ワークスペース
ibismark@ibismark-win:~$ python -m venv ~/workspace/otam/.venv3.12.1 # 仮想環境作成
ibismark@ibismark-win:~$ source ~/workspace/otam/.venv3.12.1/bin/activate # 仮想環境起動

# 仮想環境上でdjangoをインストール
(.venv3.12.1) ibismark@ibismark-win:~$ python -m pip install --upgrade pip
(.venv3.12.1) ibismark@ibismark-win:~$ python -m pip install Django==5.0.2
(.venv3.12.1) ibismark@ibismark-win:~$ python -m pip freeze
asgiref==3.7.2
Django==5.0.2
sqlparse==0.4.4
(.venv3.12.1) ibismark@ibismark-win:~$ deactivate # 仮想環境を抜ける
ibismark@ibismark-win:~$ pip freeze # 仮想環境外ではdjangoはインストールされていない 
ibismark@ibismark-win:~$

Django初期プロジェクトの作成

Django公式チュートリアルをなぞり、プロジェクトを自動生成する。
プロジェクト名をconfigで作って、後からディレクトリ名をotam_serverに変えている理由は以下の「とほほのWWW入門」さんの言を参考にした。

Django では、コンフィグディレクトリの名前もプロジェクト名と同じになってしまうため、一度、config という名前でプロジェクトを作成し、その後、ディレクトリ名を変更するのがおすすめです。

とほほのWWW入門
ibismark@ibismark-win:~$ source ~/workspace/otam/.venv3.12.1/bin/activate
(.venv3.12.1) ibismark@ibismark-win:~$ cd workspace/otam/
(.venv3.12.1) ibismark@ibismark-win:~/workspace/otam$ django-admin startproject config
(.venv3.12.1) ibismark@ibismark-win:~/workspace/otam$ mv config otam_server
(.venv3.12.1) ibismark@ibismark-win:~/workspace/otam$ tree -L 3 .
.
├── otam_server
│   ├── config
│   │   ├── __init__.py
│   │   ├── asgi.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   └── manage.py
└── .venv3.12.1

Djangoを起動してみる

(.venv3.12.1) ibismark@ibismark-win:~$ cd ~/workspace/otam/otam_server
(.venv3.12.1) ibismark@ibismark-win:~/workspace/otam/otam_server$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
February 11, 2024 - 14:44:21
Django version 5.0.2, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

ブラウザでhttp://127.0.0.1:8000/にアクセスしてDjangoのTOPページが出てきたら成功だ。You have 18 unappli~~、という警告が出ているがDBの設定を行っていないことによるものなのでこの時点では無視して良い。
確認が終わったらCtrl-Cを打ち込んで停止させておこう。


GitとGithubでソースコードを管理する

ソースコードのバージョン管理は必須だ。
githubにリポジトリを作成し、gitでバージョン管理を行おう。

Git最新版をインストール

ibismark@ibismark-win:~$ sudo add-apt-repository ppa:git-core/ppa
ibismark@ibismark-win:~$ sudo apt update
ibismark@ibismark-win:~$ sudo apt install git -y
ibismark@ibismark-win:~$ git version
git version 2.43.0
ibismark@ibismark-win:~$ git config --global init.defaultBranch main
ibismark@ibismark-win:~$ git config --global core.quotepath false # マルチバイトの文字化け回避
ibismark@ibismark-win:~$ git config --global user.email "xxxxxx@gmail.com"
ibismark@ibismark-win:~$ git config --global user.name "XXXXXXX"
ibismark@ibismark-win:~$ git config --global core.editor vim

Githubにリポジトリを作成し、pushする

githubのリポジトリ作成方法はネット上にいくらでも転がっているので割愛する。
SSH鍵を作るとき、特に理由がなければed25519を使おう。昨今ではどこのコミュニティもRSAではなくこちらを使うことを推奨している。

# githubへ登録するSSH鍵を生成する。your_email@example.comの部分は自身のものに書きかえ。
ibismark@ibismark-win:~/workspace/otam$ ssh-keygen -t ed25519 -C "your_email@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/ibismark/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_ed25519
Your public key has been saved in id_ed25519.pub
The key fingerprint is:
SHA256:+cSUN8GszgnCA7ltxoeKyzFYkSUD7RFOBpGVwZqC/y8 your_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
|+OO*..     o.    |
|.+Boo      .o.   |
|.+.o * .  o.o    |
|= o . X o+.. .   |
|.+ . + +S+o.     |
|. = .    o+      |
| . =      .      |
|  o E            |
|     o.          |
+----[SHA256]-----+
ibismark@ibismark-win:~/workspace/otam$
ibismark@ibismark-win:~/workspace/otam$ cat ~/.ssh/id_ed25519.pub #  出力された文字列をgithubへ登録
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAODmg/cy/AMOGgbqCwRIwWY9m+tks6HtyOFv73zkQoK your_email@example.com
ibismark@ibismark-win:~/workspace/otam$



# otamプロジェクトをgithubへアップロードする。
# ※.gitignoreを作成してアップロードしたくないファイルを記載しておこう。
ibismark@ibismark-win:~$ cd workspace/otam/
ibismark@ibismark-win:~$ echo "otam" > README.md
ibismark@ibismark-win:~$ echo ".*" > .gitignore
ibismark@ibismark-win:~$ echo "__pycache__" >> .gitignore
ibismark@ibismark-win:~$ echo "*.sqlite3" >> .gitignore
ibismark@ibismark-win:~$ git init
ibismark@ibismark-win:~$ git add .
ibismark@ibismark-win:~$ git remote add origin git@github.com:xxxxxxx.git
ibismark@ibismark-win:~$ git push origin main


この記事が気に入ったらサポートをしてみませんか?