我是cython的新手,所以請原諒我,如果我在這裏丟失了一些明顯的東西。我正在嘗試構建用於python的c擴展以提高性能。我有fc.py模塊一堆功能,並嘗試使用dsutils和Win64上運行時要產生通過用Cython一個.dll:cython setup.py給出.o而不是.dll
c:\python26\python c:\cythontest\setup.py build_ext --inplace
我在C dsutils.cfg:\ Python26 \ LIB \ distutils的。由於所需的disutils.cfg具有以下配置設置:
[build]
compiler = mingw32
我startup.py看起來是這樣的:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [Extension('fc', [r'C:\cythonTest\fc.pyx'])]
setup(
name = 'FC Extensions',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)
這是命令行輸出的樣子:
C:\python26\python C:\cythontest\setup.py build_ext --inplace
running build_ext
cythoning C:\cythonTest\fc.pyx to C:\cythonTest\fc.c
building 'FC' extension
C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Ic:\python26\include -Ic:\pytho
n26\PC -c C:\cythonTest\fc.c -o c:\cythontest\fc.o
我有用於目標/主機amdwin64類型構建的最新版本mingw。我有用於win64的python26的cython最新版本。 Cython確實爲我提供了一個沒有錯誤的fc.c,只有一些類型轉換的警告,我會在正確的時候處理。此外,它產生fc.def一個fc.o文件而不是提供一個.dll。我沒有得到任何錯誤。我在線程上發現,它會根據需要自動創建.so或.dll,這不會發生。
1.你看到'* .pyd'文件嗎? 2.從同一目錄嘗試它,即更改setup.py:'Extension('fc',['fc.pyx'])'並將其作爲'python setup.py build_ext --inplace'運行。 3.從FC擴展中刪除空格並不會造成什麼傷害:'setup(name ='FC',..' – jfs 2011-03-14 14:17:42
@JF Sebastian:謝謝JFS,這是可行的,我現在有了.pyd。錯誤內置錯誤:'ImportError:DLL加載失敗:%1不是有效的Win32應用程序。「但我想這是來自使用mingw,因爲我[閱讀](http://wiki.cython.org/64BitCythonExtensionsOnWindows )它在win64上不起作用 – alok 2011-03-14 16:35:20