Python パッケージガイドライン
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
このドキュメントでは Python ソフトウェアの PKGBUILD を書くときの決まり事とガイドラインを提供します。
パッケージの命名規則
Python 3 ライブラリモジュールの場合は、python-modulename
を使用します。パッケージが Python エコシステムに強く結合されたプログラムを提供する場合にも、接頭辞を使用します (例: pip または tox) 他のアプリケーションの場合は、プログラム名のみを使用します。
アーキテクチャ
PKGBUILD#arch を参照してください。
C 拡張機能を含む Python パッケージはアーキテクチャに依存します。それ以外の場合は、アーキテクチャに依存しない可能性が高くなります。
[1] を使用してビルドされたパッケージは、setup.py
の ext_modules
キーワードを使用して C 拡張機能を定義します。
ソース
PyPI Web サイトからリンクされているダウンロード URL には、パッケージを更新する必要があるたびに PyPI Web サイトから取得する必要がある予測不可能なハッシュが含まれています。このため、PKGBUILD での使用には適していません。PyPI が提供 代替の安定したスキーム: PKGBUILD#source source=()
配列次の URL テンプレートを使用する必要があります。
- ソースパッケージ
https://files.pythonhosted.org/packages/source/${_name::1}/$_name/$_name-$pkgver.tar.gz
- 純粋な Python wheel パッケージ
https://files.pythonhosted.org/packages/py2.py3/${_name::1}/$_name/${_name//-/_}-$pkgver-py2.py3-none-any.whl
(バイリンガル – Python 2 および Python 3 互換)https://files.pythonhosted.org/packages/py3/${_name::1}/$_name/${_name//-/_}-$pkgver-py3-none-any.whl
(Python 3 のみ)- ディストリビューション名にはダッシュを含めることができますが、wheel ファイル名での表現にはダッシュを含めることができないことに注意してください (ダッシュはアンダースコアに変換されます)
アーキテクチャ固有の wheel パッケージ
source_x86_64=('...')
のように、アンダースコアとアーキテクチャ名を追加することで、アーキテクチャ固有の配列を追加できます。また、_py=cp310
を使用して、Python バージョンを繰り返さないようにすることもできます。https://files.pythonhosted.org/packages/$_py/${_name::1}/$_name/${_name//-/_}-$pkgver-$_py-${_py}m-manylinux1_x86_64.whl
Python パッケージには通常、python-
という接頭辞が付けられるため、pkgname
の代わりにカスタムの _name
変数が使用されることに注意してください。この変数は一般に次のように定義できます。
_name=${pkgname#python-}
ファイルの配置場所
ほとんどの Python パッケージは setup.py による distutils システムでインストールされます。ファイルは /usr/lib/python<python version>/site-packages/pkgname
ディレクトリにインストールされます。
--optimize=1
パラメータは.pyo
ファイルをコンパイルして pacman から追跡することができます。
もし pip (wheels などのインストールで必要であり、最近 Python コミュニティから一般に推奨されています) を使う場合は、次のフラグを忘れずに渡してください:
PIP_CONFIG_FILE=/dev/null pip install --isolated --root="$pkgdir" --ignore-installed --no-deps *.whl
PIP_CONFIG_FILE=/dev/null
は pip にフラグを追加するかもしれない{/etc,~/.config}/pip.conf
を無視します。--isolated
は pip にフラグを追加するかもしれない環境変数 (それと{/etc,~/.config}/pip/pip.conf
) を無視します。--ignore-installed
は https://github.com/pypa/pip/issues/3063 が解決されるまで必要です (フラグを指定しないと先に--user
でインストールされていた場合でも pip はインストールをスキップしてしまいます)。--no-deps
はメインパッケージと一緒に依存関係がパッケージされないことを保証します。
ノート
基本的に Python パッケージはアーキテクチャに依存しないので arch
には any
を指定します。
tests
という名前のディレクトリをインストールしてはいけません。他の Python パッケージと衝突する可能性があります (例: /usr/lib/python2.7/site-packages/tests/
)。
サンプル
サンプル PKGBUILD は こちら を見るか、abs[リンク切れ: パッケージが存在しません] パッケージに入っている /usr/share/pacman/PKGBUILD-python.proto
ファイルを見て下さい。