wiki:PackagingPolicy/Python

Version 2 (modified by owa, 9 years ago) (diff)

--

Python 関連パッケージポリシー

Python 関連のパッケージングポリシーを定めます。
(ただし後付けなので現状を無理に変えることを提案してるわけではありません -- owa)

Python 本体の配置

Python 本体は以下のディレクトリに配置されます。

%{_prefix}/lib/python2.6  # arch に依存しないもの
%{_prefix}/%{_lib}/python2.6  # arch に依存するもの

arch が i686 や ppc の場合は同じ場所 "/usr/lib" になりますが、x86_64 の場合は %{_lib} が lib64 と定義されているので違う場所 "/usr/lib64" に配置されます。 また組込モジュルーはマクロ定義されている %python_sitelib に配置されますが、 arch に依存するモジュールは %python_sitearch に配置されます。 arch に依存するものは %_lib の値によって配置される場所が異なることに注意してください。

Python ライブラリパッケージの配置

原則として RPM パッケージでいれる Python ライブラリは %python_sitelib に配置し、 arch に依存するライブラリは %python_sitearch に配置するものとします。
現在は自動で振り分けてくれるものが多いと思いますが、 古いパッケージではそうで無いものもあると思います。 迷った時は上の指針で配置してください。

Python プログラムパッケージの配置

原則としてその RPM パッケージ独自のディレクトリに配置すること。
他の Python ライブラリを使用する場合は Python ライブラリへのパス指定などを使用 することが望ましい。
(他から利用されないライブラリを site-packages の下に入れないで欲しい -- owa)

各種マクロ

%__python /usr/bin/python
%pyver %(%{__python} -c "import sys; sys.stdout.write(sys.version[:3])")
%python_sitelib %(%{__python} -c 'from distutils.sysconfig import sys; sys.stdout.write(get_python_lib(0))')
  • /usr/lib/python2.6/site-packages
%python_sitearch %(%{__python} -c 'from distutils.sysconfig import sys; sys.stdout.write(get_python_lib(1))')
  • /usr/lib/python2.6/site-packages (i686, ppc 環境の場合)
  • /usr/lib64/python2.6/site-packages (x86_64 環境 の場合)

site-packages 配下の利用方法

  • site-packages ディレクトリ {%python_sitelib または %python_sitearch} にモジュール *.py や、 ライブラリ *.so を置くことは Python の名前空間を汚すことになるので注意しましょう。 もしまとめられるなら、一つの名前を付けそのディレクトリ内に収める方が望ましいと思います。