Pythonのパッケージを作ってみた

Python触り始めてから早いもので数年…

pip install nlogging

この nlogging を作って誰でも使えるようにした話。なんだかちょっと格好良くないですか…。

続きを読む: Pythonのパッケージを作ってみた

Pythonは最初「試しに業務で使ってみよう」という趣味の延長のようなところからの始まりなので、単純なスクリプトだったし寧ろこんな時こそ!みたいなタイミングでした。なので特にチャレンジングな選択でもなかったしハマることも無くサクサク完了しました。その後もチョロっとしたところでPythonが活躍する事はありましたが、簡単にできる&消耗品的なツールを作るときにふわっと近づく…そんなPythonだった訳です。

で、ここにきてもう少し身近、というか個人的に手の届くところでウロウロし始めたPython。遊びで触ったRaspberryPiPico(正確にはMicroPythonだけど)に始まり、たまたま業務リリースしたPythonアプリ(前任者がいないらしく回ってきた仕事)、さらには管理しているMastodonサーバーのスパム対策ツールなどなど…。今後も「実はこれPythonなんだけど…」みたいな話も出てきてるので、少しだけ必要に駆られてるという側面もあると言えばある雰囲気になっております。

と、前置きはこれくらいにしてPythonのパッケージングの話。

Python使ってると「pip install パッケージ名」というコマンドはほぼすべての人が体験してると思いますが、どこからパッケージが来るのか?誰が作ってるの?偉い人???などなど…。このご時世、もしかしたら知らない・気にしない人が多いのかもしれませんが、個人的にはずっと気になってたんですよね。ちょっと調べてみると、まぁ登録方法などがあちこち見られるので何とかなるんじゃないか?というところから始まりました。

かなりざっくり言うと、「配布用のパッケージを作る(ビルド)」という作業をしてから「配布(アップロード)」という2段構成の作業を行うらしい…。もう少し正確に言うと「配布」するときはまず「テスト用」の場所へアップロードしてから「正式用」の場所へアップロードするという手順が推奨されます。「推奨」という事はいきなり「正式用」としてアップロードも出来るのでしょうけど、テストはちゃんとしましょうねという事なのでしょう(あたりまえ)。

ところがこの「ビルド」作業がなかなか大変で、定義ファイルの書き方だけではなくてビルドの手法(?)がいくつかあって非常に分かりにくい。パッケージ構成の違いもあるかもですが、その時々(過去の歴史)によって推奨する形が変わっているとかいないとか…。おそらく進化してきてるのだとは思いつつ、このあたりは近付きにくい所でした。

そんな「ビルド」作業も何とかクリアし、無事にパッケージが出来ました。設定ファイルは完全に理解していませんが、やって行くうちにきっと理解度は上がっていくでしょうという事にします。

最後にどんなものを作ったのか?という話…。

Pythonの “logging” というログ出力用のパッケージがあるのですが、これをシンプルな機能(ログファイルと画面出力だけを固定フォーマットで出力)として実装できるというだけのライブラリです。

機能的にはまだログローテーション出来なかったりバグなどもあるかもと思いつつ、PyPIに登録するにはちょうど良い規模感かなという事でトライしてみた次第です。自分のためにもドキュメント化しておきました!

■ Python Package Index(PyPI)
nLoggong
https://pypi.org/project/nlogging/

■ github
nLogging
https://github.com/noradoglabo/nLogging

■ nora.dog docs
Python Package Index(PyPI)に自作パッケージを登録する方法