こぼれネット

印刷(PNG保存)失敗トラブル対応メモ

以下は、今回発生した「印刷(PNG保存)失敗」の原因と対応を、再発防止用のメモとして整理したものです。
そのまま社内メモ/作業ログに貼れる体裁にしています。


印刷(PNG保存)失敗トラブル対応メモ

対象:kakimaru / tsubame(Flask + Playwright 構成)

1. 現象


2. 原因の全体像

本質的な原因

PC交換により Python 実行環境(venv・依存ライブラリ・Playwright/Chromium)が不整合になった

コードそのものは壊れていなかった。


3. 個別の原因と対処

(1) systemd が venv ではない Python で起動していた

原因

対処

systemd の ExecStartvenv の python の絶対パスに固定。

例:

ExecStart=/home/tomoi/kakimaru/venv/bin/python /home/tomoi/kakimaru/src/server.py
ExecStart=/home/tomoi/tsubame/src/.venv/bin/python /home/tomoi/tsubame/src/server.py

反映:

sudo systemctl daemon-reload
sudo systemctl restart <service-name>

(2) venv 内の pip / 依存パッケージが壊れていた

症状

対処

python3.12 -m venv venv
venv/bin/python -m pip install -U pip setuptools wheel

(3) Playwright は入っているが Chromium 本体が入っていなかった

症状

対処

venv の python で Chromium を明示的に導入。

venv/bin/python -m playwright install chromium

必要に応じて OS 依存も導入:

sudo venv/bin/python -m playwright install-deps chromium

(4) psycopg2 が未導入、またはビルド失敗

症状

ModuleNotFoundError: No module named 'psycopg2'

または

fatal error: Python.h: No such file or directory

対処(開発環境)

venv/bin/python -m pip install psycopg2-binary

(本番用途でソースビルドが必要な場合は python3.12-dev 等を導入)


(5) systemd サービスと手動起動が混在していた

症状

Address already in use
Port XXXX is in use by another program

原因

対処


4. 最終的に正常と判断できる状態

以下がすべて満たされていること:


5. 教訓・再発防止策


以上です。
このメモがあれば、次回同様のトラブルは 最短で切り分け・復旧できます。

モバイルバージョンを終了