我想創建一個Python包與一些C代碼和NumPy依賴關係,我認爲使用numpy.distutils
將是最簡單的方法來實現。到目前爲止,我有setup.py
文件通過numpy.distutils的奇怪選擇架構
from numpy.distutils.core import setup
from numpy.distutils.misc_util import Configuration
from distutils.extension import Extension
ext_modules=[
Extension("test",
sources=["test.c"],
libraries=["gmp"],
)
]
configuration = Configuration(
package_name = "test",
ext_modules = ext_modules,
)
setup(**configuration.todict())
和空test.c
在同一目錄下。
但由於某些原因,它在編譯時增加了尷尬-arch i386 -arch x86_64
標誌(該系統爲Mac OS X),這將導致
ld: warning: ignoring file /usr/local/lib/libgmp.dylib,
file was built for x86_64 which is not the architecture being linked (i386):
/usr/local/lib/libgmp.dylib
警告,並進一步問題調用C函數。
我該如何解決這個問題?我能否以某種方式指定目標架構?
UPD。目前,我只是做
ARCHFLAGS="-arch x86_64" python setup.py build_ext --inplace
但我想它在任何平臺上運行,而不架構的先驗知識,這樣我就可以部署它。
那麼......它似乎沒有其他選擇的確如此。 –