我有一個基準測試套件,它比較了不同的方法來編寫和執行一些簡單的玩具Python代碼,主要是爲了說明Cython。使用distutils編譯不帶輸出名稱的純C代碼
我曾經有過的方法之一是在純C中編寫測試函數,用C編譯器編譯它(讓distutils爲我找到並調用編譯器),然後使用ctypes將該庫加載到Python中,並執行該功能。
這一直很流行,直到distutils開始將python版本和平臺嵌入到它生成的文件名中。
在過去,我可以說服的distutils編譯稱爲C.c
C源文件到圖書館的工作目錄下名爲C.so
:最近的distutils版本堅持重整輸出名稱到形式build/temp.linux-x86_64-3.6
或某事(這依賴於什麼distutils功能我使用)一些其他variaton在那個主題。
有沒有什麼辦法可以說服當前版本的distutils只是在當前工作目錄中調用輸出C.so
? (另外,有一些方法可靠而方便地告訴ctypes的地方通過的distutils產生的庫所在?)
[獎勵:?怎麼可以這樣的想法可以跨Linux,OS X和Windows便攜表示]
= ================================================== ==============
編輯:爲完整,這裏是我用來成功地做到這一點,在過去:
pure_C_setup.py
:
from distutils.core import setup, Extension
setup(name="ctypes-test",
ext_modules = [Extension("C", ["C.c"])])
用上面的設置文件,命令python pure_C_setup.py install --install-lib=.
用於在工作目錄下產生C.so
;今天它生產build/lib.linux-x86_64-3.6/C.cpython-36m-x86_64-linux-gnu.so
從ditutils.core.Extension的文檔,我不知道,如果你正在嘗試做的是可能的。我可能是錯的。 – SRC