2014-03-30 41 views
0

setup.py具有用於測試的功能,如果函數定義:在setup.py中,如何測試PyCapsule_New是否被定義?

compiler = distutils.ccompiler.new_compiler() 
if compiler.has_function ('foo_new', libraries=("foo",)): 
    define_macros.append (('HAVE_FOO_NEW', '1')) 

但是我似乎無法使用此用於Python擴展函數(具體PyCapsule_New)。下面沒有定義任何東西:

if compiler.has_function ('PyCapsule_New'): 
    define_macros.append (('HAVE_PYCAPSULE_NEW', '1')) 

我似乎需要把在libraries爭論什麼,但什麼? Python庫的名稱發生更改,除非作爲gcc參數(例如,BLDLIBRARY被定義爲類似於-L. -lpython2.7之類的內容),否則在distutils.sysconfig中不可用。

這似乎是這樣一個明顯的/通用的事情想這樣做的代碼將在Python中的多個版本,但沒有setup.py腳本我可以找到使用這種方式has_function

回答

0

而不是對Python功能進行配置檢查,你可以做一些編譯時測試。理想情況下,您可以檢查Python版本(PY_MAJOR_VERSIONPY_MINOR_VERSION),但您也可以依賴頭文件中定義的宏。

對於您的特定功能,請注意,一旦包含標頭pycapsule.h(通過Python.h),即可定義Py_CAPSULE_H宏。

相關問題