使用swig和Anaconda Python找不到Python.h

使用swig和Anaconda Python找不到Python.h,第1张

使用swig和Anaconda Python找不到Python.h

使用该选项

-I/Users/myuser/anaconda/include/python2.7
gcc
命令。(假设您使用的是python
2.7。更改名称以使其与所使用的python版本匹配。)您可以使用以下命令
python-config --cflags
获取建议的全套编译标志集:

$ python-config --cflags-I/Users/myuser/anaconda/include/python2.7 -I/Users/myuser/anaconda/include/python2.7 -fno-strict-aliasing -I/Users/myuser/anaconda/include -arch x86_64 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes

但是,要构建扩展模块,我建议使用简单的安装脚本,例如以下

setup.py
,并
distutils
为您找出所有编译和链接选项。

# setup.pyfrom distutils.core import setup, Extensionexample_module = Extension('_example', sources=['example_wrap.c', 'example.c'])setup(name='example', ext_modules=[example_module], py_modules=["example"])

然后,您可以运行:

$ swig -python example.i$ python setup.py build_ext --inplace

(看看

setup.py
运行时回显到终端的编译器命令。)

distutils
知道SWIG,因此
example_wrap.c
可以包括而不是将其包括在源文件列表中
example.i
,并且
swig
将由安装脚本自动运行:

# setup.pyfrom distutils.core import setup, Extensionexample_module = Extension('_example', sources=['example.c', 'example.i'])setup(name='example', ext_modules=[example_module], py_modules=["example"])

使用上述版本的

setup.py
,您可以使用单个命令构建扩展模块

$ python setup.py build_ext --inplace

构建扩展模块后,您应该可以在python中使用它:

>>> import example>>> example.fact(5)120

如果您不想使用该脚本

setup.py
,那么下面的一组命令对我有用:

$ swig -python example.i$ gcc -c -I/Users/myuser/anaconda/include/python2.7 example.c example_wrap.c $ gcc -bundle -undefined dynamic_lookup -L/Users/myuser/anaconda/lib example.o example_wrap.o -o _example.so

注意:我使用的是Mac OS X 10.9.4:

$ gcc --versionConfigured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)Target: x86_64-apple-darwin13.3.0Thread model: posix


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5662049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存