mit*_*tch 2 c++ python macos xcode cython
我用python写了一个简单的程序:
// main.py
import re
links = re.findall('(https?://\S+)', 'http://google.pl http://youtube.com')
print(links)
Run Code Online (Sandbox Code Playgroud)
然后我执行这个:
cython main.py
Run Code Online (Sandbox Code Playgroud)
它生成了一个文件:main.c 然后我尝试了这个:
gcc main.c
Run Code Online (Sandbox Code Playgroud)
我有一个错误:
main.c:8:10: fatal error: 'pyconfig.h' file not found
#include "pyconfig.h"
^
1 error generated.
Run Code Online (Sandbox Code Playgroud)
如何将python编译为c?如何在 mac 上开始使用带有 xcode 的 cython?
您必须使用标志告诉gcc编译器pyconfig.h系统上的文件在哪里-I。您可以使用该find程序找到它。
编译模块的一种更简单的方法是使用setup.py模块。Cython 提供了一个cythonize函数来启动一个.pyx模块的这个过程。
您缺少的另一点是Cython 文件通常定义要从主 Python 模块使用的辅助函数。
假设您对目录和文件进行了以下设置:
cython-start/
??? main.py
??? setup.py
??? split_urls.pyx
Run Code Online (Sandbox Code Playgroud)
的内容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
)
Run Code Online (Sandbox Code Playgroud)
split_urls.pyx文件的内容是
import re
def do_split(links):
return re.findall('(https?://\S+)', links)
Run Code Online (Sandbox Code Playgroud)
它是使用定义的 Cython 函数的main.py模块:
import split_urls
URLS = 'http://google.pl http://youtube.com'
print split_urls.do_split(URLS)
Run Code Online (Sandbox Code Playgroud)
通过发出以下命令编译 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 ...
Run Code Online (Sandbox Code Playgroud)
并检查您的主模块是否正在做它应该做的事情:
$ python main.py
['http://google.pl', 'http://youtube.com']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6725 次 |
| 最近记录: |