我有一个纯 python 包B
和一个依赖于平台的包A
(即A
包含 C 扩展模块)。我希望安装B
为 的子包A
,并且预期的层次结构就像,
<python-libdir>/site-packages/
+ <A>
+ __init__.py
+ _<A>.so
+ <B>
+ __init__.py
+ _<B>.py
由于许可和其他问题,我需要将它们放在单独的项目中,A
并为每个B
项目创建单独的distutils
脚本(又名。setup.py
)。
问题是A
依赖于平台。当我<A>
在 CentOS / RHEL (x86_64) 系统上(即通过$ python setup.py bdist_rpm
)打包(rpm-)时,它会安装到,
/usr/lib64/python2.6/site-packages/<A>
而B
这是一个纯 python 包,默认情况下,它的内容是,
/usr/lib/python2.6/site-packages/<A>/<B>
--force-arch
我在为 构建 rpm 包时尝试了该选项<B>
,即
$ python setupB.py bdist_rpm --force-arch x86_64
这会在其文件名中生成B
带有 with的 rpm 包(而不是),但它仍然安装到,而不是所需的.x86_64
noarch
<B>
/usr/lib/...
/usr/lib64/...
任何人都可以建议一种简单的配置方法<B>
(即可能在setup.py
or中设置一些参数setup.cfg
),以便它安装到依赖于平台的 libdir (即/usr/lib64/...
)?
编辑:我知道命令的--install-purelib
选项install
,即
$ python setupB.py install --install-purelib=/usr/lib64/python2.6/site-packages
它确实实现了所需的包层次结构。但似乎没有bdist_rpm
对distutils
.
有没有办法在or中指定这个--install-purelib
选项?setup.py
setup.cfg