您必須使用-I
標誌告訴gcc
編譯器,系統中的pyconfig.h
文件在哪裏。您可以使用find
程序找到它。
A 更簡單的編譯方式模塊使用的是setup.py
模塊。 Cython提供了一個cythonize
函數,該函數爲.pyx
模塊啓動此過程。
您缺少的另一點是:Cython文件通常定義從主Python模塊使用的輔助函數。
假設你有以下設置爲顯示目錄和文件:
cython-start/
├── main.py
├── setup.py
└── split_urls.pyx
的setup.py
的內容是
from distutils.core import setup
from Cython.Build import cythonize
setup(name="My first Cython app",
ext_modules=cythonize('split_urls.pyx'), # accepts a glob pattern
)
的split_urls.pyx
文件的內容是
import re
def do_split(links):
return re.findall('(https?://\S+)', links)
它是main.py
模塊whi CH 使用已定義的用Cython功能:
import split_urls
URLS = 'http://google.pl http://youtube.com'
print split_urls.do_split(URLS)
發出編譯用Cython模塊:
$ python setup.py build_ext --inplace
Cythonizing split_urls.pyx
running build_ext
building 'split_urls' extension
creating build
creating build/temp.macosx-10.9-x86_64-2.7
... compiler output ...
,並檢查您的主要模塊是做什麼是應該做的事:
$ python main.py
['http://google.pl', 'http://youtube.com']
或者,您可以將'main.py'重命名爲'main.pyx',然後按照logc的說法創建並運行'setup.py'。然後你可以在控制檯執行'import main'或者在shell中執行'python -c「import main'''。 – richizy