Skip to content

Python

Python のパッケージ管理を rye で行う

Python のパッケージ管理ツールは幾つかあります。 Armin Ronacher さんが開発した rye が使いやすかったのでインストールや基本的な利用手順をメモしておきます。 Armin Ronacher さんは rye の他に flask や jinja、click 等を開発されているそうです。 また、rye が初めて公開されたのは 2023 年 5 月だそうです。 今回は macOS 13.4.1 で検証しました。

Python で「プリフィックス / ネットマスク / ワイルドカード」を相互変換する

George Shuklin さんが Wildcard masks operations in Python という記事で「Python でワイルドカードを操作する方法」をまとめてくださっています。 ワイルドカードが関連しないケースも含め、「プリフィックス長」「ネットマスク」「ワイルドカード」を相互変換する Python サンプルコードをメモしておきます。

cron から venv 環境の Python スクリプトを実行する

Python スクリプトを実行する為、以下のように /opt/sample ディレクトリ配下に .venv という venv 環境をしたとします。

1
2
cd /opt/sample
python3 -m venv .venv

この環境に対して venv 環境を意識した Python スクリプトを実行するには (システム全体の Python では無く) 以下のように venv 環境内の Python を指定します。 下記の例では /opt/sample/.venv/bin/python3 のように venv 環境内の Python を指定しています。

1
0 0 * * * root cd /opt/sample/ && /opt/sample/.venv/bin/python3 script.py

Python スクリプトを Windows 用の .exe へ変換する

Python で作成したスクリプトを Windows 環境に配布したい場合、pyinstaller で .exe 化してしまう、という方法があります。 pyinstaller 実行時のオプション次第でもあるのですが、「ランタイムや関連ライブラリを全て .exe に同梱してしまい、配布先環境に Python 本体やライブラリが無くても動作させる」ということも可能です。

予め、pyinstaller をインストールしておきます。

1
python3 -m pip install pyinstaller

後は必要に応じて、以下いずれかの実行コマンド (等) を実行するだけです。

関連ファイルを含める? アイコンを指定する? 実行コマンド
X X pyinstaller sample.py
X pyinstaller sample.py --onefile
pyinstaller sample.py --onefile --ico=favicon.ico

これで dist ディレクトリ配下に .exe ファイルが生成されます。

Streamlit 1.11.0 からは簡単にマルチページアプリケーションが作れる

2022/07/14 にリリースされた Streamlit の Version 1.11.0 から、簡単にマルチページアプリケーションを作れる機能がサポートされました。 詳しくは Multipage apps や公式ブログの Introducing multipage apps! に書かれています。 マルチページにするだけであればコーディングする必要は無く、以下のようにファイルを配置します。 但し、各ページは「1 ページ = 1 ファイル」とし、必ず pages ディレクトリ配下に保存する 必要があります。

Nginx で Proxy させる場合の Streamlit 起動方法

フロントエンドは Nginx を使って Proxy し、バックエンドで Streamlit を動作させる場合、例えば Nginx 側は /etc/nginx/conf.d/default.conf を以下のように設定することが出来ます。 location /app 内で proxy_pass http://127.0.0.1:8501; を指定することにより、http://ADDRESS/app/ へのリクエストは Nginx で Proxy され、ローカルホストの 8501/TCP で動作している Streamlit アプリケーションへ転送されます。

Streamlit の Markdown で特定箇所のみ、スタイルを適用する

現状の Streamlit に用意されている各エレメントは標準機能だけでは「フォントのカスタマイズ」などがあまり出来ず、「Markdown で CSS を挿入する」といった工夫が必要です。 Change font size and font color で議論されていますが、「ピンポイントで特定箇所のフォントだけをカスタマイズして表示したい」という場合は Markdown で該当箇所のみ、スタイルを適用します。