我有一个相当复杂的setup.py
cython编译过程,其中考虑了诸如openMP支持以及是否存在C头之类的多种情况。具体来说,FFTW是一个计算FFT的库,它比numpy的FFT更快,因此,如果fftw3.h
可用,我将对此进行编译,否则将退回到numpy。
我想记住程序包的编译方式,即编译器是否支持openMP以及使用了哪个FFT库。所有这些信息在运行setup.py
时都可用,但以后将不再可用,例如如果用户希望使用多个内核来运行一个功能,但是在编译过程中未使用openMP,则所有内容都将在一个内核上运行。记住这些信息可以使我表现出很好的错误。
我不确定执行此操作的最佳方法是什么。有很多选项,例如用数据写入文件,然后在需要时读取它,但是有什么标准方法可以做到这一点?基本上,我试图模仿numpy的show_config
,但不确定实现此目的的最佳方法是什么。
答案 0 :(得分:1)
我还没有尝试过,但是我的建议是模仿基于自动工具的构建所看到的config.h行为:setup.py生成了一组定义,您可以通过命令行调用这些定义,也可以通过生成的标头使用文件-然后您可以使用它来提供例如一个已编译的扩展函数以返回适当的数据结构。但是无论您做什么:我还没有遇到标准化的方法。