似乎默认设置来自distutils.core并将cmdclass设置为build_ext,在当前工作目录中编译cpp或c文件.有没有办法确定生成的c代码写入的位置?否则,存储库将充满生成的代码.
例如,此文件setup.py将文件example.c写入当前工作目录:
from distutils.core import setup from Cython.Build import cythonize setup( ext_modules = cythonize("example.pyx"))
DavidW.. 15
您可以将选项传递build_dir="directory name"
给Cythonize
# rest of file as before setup( ext_modules = cythonize("example.pyx", build_dir="build"))
上面的代码将生成的c文件放在目录"build"中(这是有道理的,因为默认情况下distutils放置临时目标文件等等在构建时).
我的原始答案working
不是build_dir
.感谢@ArthurTacca指出那似乎不再合适.
您可以将选项传递build_dir="directory name"
给Cythonize
# rest of file as before setup( ext_modules = cythonize("example.pyx", build_dir="build"))
上面的代码将生成的c文件放在目录"build"中(这是有道理的,因为默认情况下distutils放置临时目标文件等等在构建时).
我的原始答案working
不是build_dir
.感谢@ArthurTacca指出那似乎不再合适.
初始化扩展后,可以将参数设置为在临时目录中创建c.
module = Extension("temp", "temp.pyx") module.cython_c_in_temp = True