我的setup.py中的代码是这样写的:from distutils.core import setup from distutils.extension import Extension import Cython from Cython.Build import cythonize import numpy extensions = [ Extension('models.model', ['model.pyx'], include_dirs=[numpy.get_include()],language="c++"), ] setup( name='models', ext_modules=cythonize(extensions), ) # 添加以下两行代码 for e in extensions: e.cython_directives = {"language_level": 3} ext_modules = cythonize(extensions),但是当我运行python setup.py build_ext --inplace命令时,却只生成了该.pyx对应的cpp文件,没有对应的hpp文件,我希望生成.pyx文件对应的.cpp和.hpp文件应该怎么做
时间: 2024-01-26 15:02:47 浏览: 153
pycompiler:使用Cython将.py文件编译为ELF
你可以尝试添加`--annotate`选项来生成更详细的编译日志,例如`python setup.py build_ext --inplace --annotate=build`。这样可以查看是否有语法错误或其他问题导致hpp文件未生成。
另外,你也可以尝试添加`extra_compile_args`和`extra_link_args`来指定编译参数,例如:
```python
extensions = [
Extension('models.model', ['model.pyx'], include_dirs=[numpy.get_include()], language="c++",
extra_compile_args=["-std=c++11", "-O3"], extra_link_args=["-std=c++11"]),
]
```
其中`extra_compile_args`用于指定编译器参数,`extra_link_args`用于指定链接器参数。你可以根据自己的需求进行修改。
最后,你也可以手动编译生成hpp文件,例如:
```bash
cython -3 --cplus model.pyx
```
这会生成model.cpp和model.hpp两个文件。然后你可以将model.cpp添加到extensions中进行编译。
阅读全文