我有一个pure-python包B
和一个依赖于平台的包A
(即A
包含C-extension模块)。我希望将B
安装为A
的子包,并且预期的层次结构就像是,
<python-libdir>/site-packages/
+ <A>
+ __init__.py
+ _<A>.so
+ <B>
+ __init__.py
+ _<B>.py
由于许可和其他问题,我需要将A
和B
放在不同的项目中,并为每个项目创建单独的distutils
脚本(又名。setup.py
)它们。
问题是A
与平台有关。当我(rpm-)在CentOS / RHEL(x86_64)系统上封装<A>
时(即通过$ python setup.py bdist_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
的rpm包,其文件名中包含x86_64
(而不是noarch
),但它仍会<B>
安装到/usr/lib/...
,不是所需的/usr/lib64/...
。
任何人都可以建议一种简单的方法来配置<B>
(即可能在setup.py
或setup.cfg
中设置一些参数),以便它安装到依赖于平台的libdir(即{{1 }})?
编辑:我知道/usr/lib64/...
命令的--install-purelib
选项,即
install
它确实实现了所需的包层次结构。但$ python setupB.py install --install-purelib=/usr/lib64/python2.6/site-packages
的{{1}}命令似乎没有等效选项。
有没有办法在bdist_rpm
或distutils
中指定此--install-purelib
选项?