使用 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.cfg
和 inplace=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
文件的最后一部分(其中 ...)是否绝对必要。
我正在使用 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.cfg
和 inplace=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
文件的最后一部分(其中 ...)是否绝对必要。