2

我有一个纯 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_rpmdistutils.

有没有办法在or中指定这个--install-purelib选项?setup.pysetup.cfg

4

0 回答 0