「Python パッケージガイドライン」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(アーキテクチャを翻訳して追加)
(ソースを翻訳して追加)
18行目: 18行目:
   
 
[https://setuptools.pypa.io/setuptools] を使用してビルドされたパッケージは、{{ic|setup.py}} の {{ic|ext_modules}} キーワードを使用して C 拡張機能を定義します。
 
[https://setuptools.pypa.io/setuptools] を使用してビルドされたパッケージは、{{ic|setup.py}} の {{ic|ext_modules}} キーワードを使用して C 拡張機能を定義します。
  +
  +
== ソース ==
  +
  +
PyPI Web サイトからリンクされているダウンロード URL には、パッケージを更新する必要があるたびに PyPI Web サイトから取得する必要がある予測不可能なハッシュが含まれています。このため、PKGBUILD での使用には適していません。PyPI [https://github.com/pypa/pypi-legacy/issues/438#issuecomment-226940730 が提供] 代替の安定したスキーム: [[PKGBUILD#source]] {{ic|1=source=()}} 配列次の URL テンプレートを使用する必要があります。
  +
  +
;ソースパッケージ:
  +
:{{ic|<nowiki>https://files.pythonhosted.org/packages/source/${_name::1}/$_name/$_name-$pkgver.tar.gz</nowiki>}}
  +
;純粋な Python wheel パッケージ
  +
:{{ic|<nowiki>https://files.pythonhosted.org/packages/py2.py3/${_name::1}/$_name/${_name//-/_}-$pkgver-py2.py3-none-any.whl</nowiki>}} (バイリンガル – Python 2 および Python 3 互換)
  +
:{{ic|<nowiki>https://files.pythonhosted.org/packages/py3/${_name::1}/$_name/${_name//-/_}-$pkgver-py3-none-any.whl</nowiki>}} (Python 3 のみ)
  +
: ディストリビューション名にはダッシュを含めることができますが、wheel ファイル名での表現にはダッシュを含めることができないことに注意してください (ダッシュはアンダースコアに変換されます)
  +
アーキテクチャ固有の wheel パッケージ
  +
: {{ic|1=source_x86_64=('...')}} のように、アンダースコアとアーキテクチャ名を追加することで、アーキテクチャ固有の配列を追加できます。また、{{ic|1=_py=cp310}} を使用して、Python バージョンを繰り返さないようにすることもできます。
  +
:{{ic|<nowiki>https://files.pythonhosted.org/packages/$_py/${_name::1}/$_name/${_name//-/_}-$pkgver-$_py-${_py}m-manylinux1_x86_64.whl</nowiki>}}
  +
  +
Python パッケージには通常、{{ic|python-}} という接頭辞が付けられるため、{{ic|pkgname}} の代わりにカスタムの {{ic|'''_name'''}} 変数が使用されることに注意してください。この変数は一般に次のように定義できます。
  +
  +
_name=${pkgname#python-}
   
 
== ファイルの配置場所 ==
 
== ファイルの配置場所 ==

2023年6月28日 (水) 17:05時点における版

このドキュメントでは Python ソフトウェアの PKGBUILD を書くときの決まり事とガイドラインを提供します。

パッケージの命名規則

Python 3 ライブラリモジュールの場合は、python-modulename を使用します。パッケージが Python エコシステムに強く結合されたプログラムを提供する場合にも、接頭辞を使用します (例: pip または tox) 他のアプリケーションの場合は、プログラム名のみを使用します。

ノート: パッケージ名はすべて小文字にする必要があります。

アーキテクチャ

PKGBUILD#arch を参照してください。

C 拡張機能を含む Python パッケージはアーキテクチャに依存します。それ以外の場合は、アーキテクチャに依存しない可能性が高くなります。

[1] を使用してビルドされたパッケージは、setup.pyext_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/nullpip にフラグを追加するかもしれない {/etc,~/.config}/pip.conf を無視します。
  • --isolatedpip にフラグを追加するかもしれない環境変数 (それと {/etc,~/.config}/pip/pip.conf) を無視します。
  • --ignore-installedhttps://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 ファイルを見て下さい。