2024/09/27 –, 20F Track1
皆さんは「PEP 723 – Inline script metadata」(応募時 Status: Final)をご存知ですか?
私の中ではこれはかなりインパクトの大きいPEPです。
Pythonでスクリプトを書くときの世界がガラッと変わる内容なんです!
Pythonでプロジェクトを開発するとき、仮想環境を使いますよね。
開発者が作って有効にすることもあれば、それをPoetryやHatchなどのツールに任せることもあると思います。
Pythonスクリプトの開発でも同様に仮想環境を使います。
PEP 723が劇的なのは、Pythonスクリプトの動作に必要な依存パッケージを、ツール側で自動で仮想環境にインストールしてスクリプトを動かしてくれるんです!
開発者はスクリプトのための仮想環境の操作から解放されるんですよ!!
私はPEP 723を部分的にサポートしたpipx(pipx run
)を愛用しています。
その中で見えてきた使いこなしtipsと合わせて、皆さんをPEP 723を覗くクイックツアーへご案内します。
ちょっとしたスクリプトがすっごく書きやすくなりますよ〜
PEP 723とは
ref: https://peps.python.org/pep-0723/#example
# /// script
# dependencies = [
# "requests<3",
# "rich",
# ]
# ///
import requests
from rich.pretty import pprint
resp = requests.get("https://peps.python.org/api/peps.json")
data = resp.json()
pprint([(k, v["title"]) for k, v in data.items()][:10])
このスクリプトを動かすにはrichやrequestsが必要です。
かつての私は仮想環境を作り、pip install rich requests
してからスクリプトを動かしていました。
pipxは1.4.2からPEP 723を(部分的に)サポートしており、上のスクリプトは仮想環境を作ることなくpipx run example.py
と実行できます!
何が起こっているかと言うと
- pipxがInline script metadata(
/// script
のコメント)を解釈 - pipxが管理する仮想環境にdependenciesをインストール
- 2の仮想環境を有効にしてスクリプト
example.py
を実行
開発者が仮想環境を操作不要なんです!(pipxに任せなさい🙌)
この世界を一緒に見ていく30分としたいと思います
アウトライン
自己紹介・まとめ、それぞれ1分ずつ(2分)
PEP 723の紹介(8分)
- Inline script metadataの仕様について
- dependencies
- requires-python
- 提案経緯
- 実装例(手短に)
PEP 723を実装するツールの紹介(13分)
- pip-run(手短に)
- pipx
- (dependenciesのみの限定サポートですが、とても便利です!)
- pipxとはどんなツールか
- pipx自体のインストールについて
pipx install
(手短に)pipx run
- PEPによると、Hatchなどもサポートが予定されているので9月時点の最新情報を盛り込みます
PEP 723をサポートしたpipxでPythonスクリプトを開発・実行しての学びの共有(7分)
- よい点1:一度動けば他の開発者の手元でも動く(環境の変化に強い)
- よい点2:簡単に依存ライブラリを追加できる
使いこなしtips
* python -i
相当のことをやるには?(pipxのソースコードリーディングから)
* エディタ(VS Code)で補完があたるようにするには?
PEP 723はめちゃめちゃ熱いPEPだと思っていまして、とにかく多くのPython使いに知っていただいて皆さんでその便利さを享受していただきたく、選びました。
ちょっとした自動化でシェルスクリプト代わりにPythonスクリプトを書くことが結構あるのではないかと思うのですが、PEP 723を知っておくとめちゃめちゃ恩恵にあずかれますよ〜
聞いた方の多くに「pipx run script.py
便利そうだし、やってみるか」と思ってもらえるように話します(会場でやってみてほしい!)
- PEP 723(Inline script metadata)のざっくりした理解
- pipxというツールで何ができるか
pipx run script.py
まわりのtips
- Pythonのチュートリアルを修了されている(例:Python Boot Campテキスト)
- ふだん仮想環境を作って開発している
「PEPなんて読んだこともない」「pipxなんて初耳」そんなあなたも大丈夫です!
Pythonスクリプトを書く方に経験レベルによらずに広く知っていただきたくお話しします。
スクリプトを書くときに仮想環境が(開発者の操作)不要になることをぜひ知りにきてください!
Beginner
発表の言語 –日本語
発表資料の言語 –日本語
にっきーです
Nikkie began his career as a software engineer in 2016.
He started Python as a hobby in 2017 and fell in love with it.
He is engaged in Natural Language Processing as a data scientist at Uzabase, inc. Tokyo, Japan from 2019.
He is working on the Python community in Japan as a staff of the following event:
-
Start Python Club (online, monthly)
-
PyCon Japan: the largest PyCon in Japan
-
core staff on 2019 and 2020 (Program committee, lead on 2020)
-
chair on 2021
He gave talks at many PyCons in Japan and abroad.
-
EuroPython 2020, PyCon Africa 2020, PyCon APAC 2020 2022 (English)
He loves anime (Japanese animetation) as much as Python, and implements ideas related to some anime with Python.