setuptools 构建多个扩展

问题描述 投票:0回答:1

我有一个 C++ 项目,我已经成功地使用了 python 和 PyPI。我的问题是,当使用 setuptools 构建多个扩展时,从 swig 生成的二进制文件未存储在相应的模块目录中。以下是运行

setup.py
脚本后我的项目中文件结构的示例。

example_project/
├── setup.py
├── _module1.cpython-310-x86_64-linux-gnu.so
├── _module2.cpython-310-x86_64-linux-gnu.so
├── _module3.cpython-310-x86_64-linux-gnu.so
└── pyAPI/
    ├── module1/
    │   ├── __init__.py
    │   ├── module1.i
    │   └── module1.py       
    ├── module2/
    │   ├── __init__.py
    │   ├── module2.i
    │   └── module2.py       
    └── module3/
        ├── __init__.py
        ├── module3.i
        └── module3.py       

有没有办法将生成的文件保留在与其相关的文件夹中,例如这样:

example_project/
├── setup.py
└── pyAPI/
    ├── module1/
    │   ├── __init__.py
    │   ├── module1.i
    │   ├── module1.py       
    │   └── _module1.cpython-310-x86_64-linux-gnu.so
    ├── module2/
    │   ├── __init__.py
    │   ├── module2.i
    │   ├── module2.py       
    │   └── _module2.cpython-310-x86_64-linux-gnu.so
    └── module3/
        ├── __init__.py
        ├── module3.i
        ├── module3.py       
        └── _module3.cpython-310-x86_64-linux-gnu.so    

我的

setup.py
文件不包含任何花哨的内容,我只是声明扩展源文件和 swig_opts 然后用
ext_modules=[module1,module2,module3]

调用它们
python setuptools swig pypi distutils
1个回答
0
投票

根据https://setuptools.pypa.io/en/latest/userguide/ext_modules.html 您可以将子包作为 Python 点名称包含在扩展的命名约定中。

因此,

Extension(name="...")
您的情况下的每个扩展应该是 PyAPI.module1._module1、PyAPI.module2._module2 等。

© www.soinside.com 2019 - 2024. All rights reserved.