はじめに
Pythonの案件に参画することになったので、学習する。
環境
- windows
- vscode
- pluginはwsl側にインストールする必要がある
- インタプリンタの設定をして、ボタンでpythonを実行できるようにした。コマンド打つより楽
- wsl
-
Reopen Folder in WSL
と打って、vscodeフォルダを開きなおすこと
-
- python 3.11 (最新は3.14)
- python3と打つのが嫌なのでシンボリックリンクを張った
sudo ln -sf /usr/local/bin/python3 /usr/bin/python
動画、2時間30分
まずはこれからやってみる。倍速で流し見でOK。
仕事では何を覚えればいいんだろう?
仕事ではAPIを実行して、その値を整形していた気がする
構成。コードはこちら
api-lesson/
├── api_client/
│ ├── __init__.py
│ └── client.py ← APIアクセスやエラーハンドリングの本体
└── main.py ← 実行用のCLIスクリプト
準備
pip install requests
実行方法
# ID=1 の投稿を取得
python main.py --id 1
# JSONをそのまま表示
python main.py --id 1 --raw
# 存在しないIDを指定してエラー確認
python main.py --id 9999
# タイムアウト強制(0.001秒で失敗させる)
python main.py --id 1 --timeout 0.001
リトライ対象と非対象のステータスコード
✅ リトライ対象
-
429 Too Many Requests
レート制限オーバー(呼びすぎ)
時間を置けば成功することが多い → リトライ対象 -
5xx サーバエラー
例:500 Internal Server Error
,503 Service Unavailable
など
クライアントのリクエスト内容は正しいが、サーバが壊れているだけ
待てば回復する可能性が高い → リトライ対象
❌ リトライ非対象
-
4xx クライアントエラー
例:400 Bad Request
,401 Unauthorized
,404 Not Found
など
リクエスト自体が間違っていることが多い
リトライしても意味がない
例:404
を何度叩いても存在しないリソースは返ってこない
自動テスト pytest
pythonのバージョン切り替える方法
🔹 venv(仮想環境)とは
プロジェクトごとに独立した Python 環境を作れる仕組み
ライブラリや依存関係を分離できるので、他のプロジェクトやシステム全体に影響を与えません
方法1:pyenvを使う(複数バージョン切り替えに最適)
-
pyenvインストール
sudo apt update sudo apt install -y build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev curl https://pyenv.run | bash
.bashrc に以下を追加して有効化:
export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)"
反映:
source ~/.bashrc
-
Python 3.13 をインストール
pyenv install 3.13.0
-
3.13 を一時的に使う
pyenv shell 3.13.0 python --version # → Python 3.13.0
-
元に戻す(3.11 に切り替え)
pyenv shell system python --version # → Python 3.11.x
コード修正lint、ruffというツールがある
-
Black = フォーマット専用。常に同じスタイルになる安心感。
-
Ruff = リント(エラーや無駄コード検出)+自動修正+フォーマット(Black互換モード)。
ツール導入(最小セット)
pip install ruff black
一括で直す
ruff check . --fix black .
ファイル単位で直す
# 1つのファイルをチェック&修正 ruff check script.py --fix # フォルダ以下を全部チェック&修正 ruff check . --fix
# 1つのファイルを整形 black script.py # プロジェクト全体を整形 black .
問題点だけみたい
# ディレクトリ全体をチェック ruff check . # 特定のファイルだけチェック ruff check script.py
black --check . black --diff script.py