ラスパイOSをbookwormにするとpipの使い方で気をつける必要があった件

遅まきながらラズパイのOSをbookwormに更新しようと調べていたところ、pipの使い方をこれまでと変えねばいけないようだ。

www.denshi.club

blog.jp.square-enix.com

私は言語系の仮装環境を使うのは好みではなかったのだが、ここはPEP668に従おう。そのために気になることが2つ。

  1. Ansibleでpipで何かインストールする際はどうすればいい?
  2. systemdのユニットで実行するPythonスクリプトはどうやって実行すればいい?

1.はAnsibleのpipモジュールでvirtualenvパラメータを指定すればできた。 しかもvenvなど事前に設定せずとも、下の例だと.venvディレクトリも無い状態でも、Ansibleがよしなに.venv内に環境作ってくれた。えらい。

    - name: pip for Python scripts.
      pip:
        name:
          ["polars", "requests"]
        virtualenv: ~/.venv

ansible.builtin.pip module – Manages Python library dependencies — Ansible Community Documentation

2.はsystemdの.serviceファイルでpythonスクリプト実行指定に仮装Python環境のpython3をパス指定して実行すればよい。こんな感じでExecStartでbinをパス指定で実行すればよい。

[Service]
ExecStart=/home/pi/.venv/bin/python3 /home/pi/実行したいスクリプト.py
WorkingDirectory=/home/pi
User=pi