使用 setuptools 编辑编译文件的位置

Edit location of compiled files with setuptools

我正在使用 setuptools 在我的 setup.py

中使用以下代码使用 Cython 编译一个 pyx 文件
from Cython.Distutils import build_ext

extensions=[Extension("filtering.filter", "filtering/filter.pyx")

setup(
   name="..",
   ........
   ext_modules=extensions,
   cmdclass={"build_ext", build_ext}
   include_dirs=[".", numpy.get_include()]
)

我想使用 pip install . 来安装它而不是 python setup.py ... 当 运行 pip install . 它编译文件正确,但存储在错误的地方,它存储在 filtering/ 而不是 my_project/filtering/

我试过用 setup.cfginplace=1 也试过 build_lib=. 但这也没有把它放在正确的地方 任何帮助表示赞赏

我正在编写一个包,其中所有代码都在 src 目录中,这种方法对我来说效果很好。

包结构

src
 |-- foo
 |   |-- foo.pyx
 |
 |-- setup.py
 |-- setup.cfg
 |-- (.toml, LICENSE ... )

setup.cfg

[metadata]
.
.
.
[options]
packages = find:
package_dir = src
.
.
.
[options.packages.find]
where = src

setup.py

from setuptools import setup
from setuptools.extension import Extension
from Cython.Build import cythonize

ext_modules = [
    Extension(
        name = "foo.foo.pyx",
        sources = ["src/foo/foo.pyx"]
    )
]

if __name__ == "__main__":

    setup(
        ext_modules=cythonize(ext_modules)
    )

我不确定 .cfg 文件的最后一部分(其中 ...)是否绝对必要。