我有一个纯 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_64noarch<B>/usr/lib/.../usr/lib64/...
任何人都可以建议一种简单的配置方法<B>(即可能在setup.pyor中设置一些参数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.pysetup.cfg