替换C ++扩展

时间:2016-11-02 18:43:06

标签: python c++ distutils

我正在尝试用C ++编写一个简单的模块并将其导入Python。但是,当我尝试使用import greet导入模块时,出现ImportError: dynamic module does not define module export function (PyInit_greet)错误。

在阅读了与此问题相关的另一个SO问题(here)后,我认为我可能遇到版本问题(因为我使用的是Python3.5)。但话说回来,我用来构建和安装的每个命令,我都在使用Python3.5,那么我怎么会遇到版本问题呢? (python3.5 build setup.pypython3.5 setup.py install)。

我正在尝试创建Python文档(here)中描述的简单项目的修改版本,一切正常,直到我尝试导入模块。

这是我的setup.py文件:

from distutils.core import setup, Extension

greet_module = Extension('greet',
        define_macros=[('MAJOR_VERSION','1'),
                   ('MINOR_VERSION','0')],
        include_dirs=['/usr/local/include'],
        # clang: warning: libstdc++ is deprecated; move to
        # libc++ with a minimum deployment target of OS X 10.9
        sources=['greet.cpp'])

setup (name='Greet_Package',
       version='1.0',
       description='This is a demo package',
       author='ralston',
       author_email='null',
       url='https://google.com',
       long_description='''This is really just a demo package''',
       ext_modules=[greet_module])

它可能与我的include_dirs参数有关吗?我的Python3.5实际上并没有安装在那里,但我尝试将我的Python3.5路径放在include_dirs中,但我得到了同样的错误。当我构建setup.py时,这是我的输出:

running build
running build_ext
building 'greet' extension
creating build
creating build/temp.macosx-10.6-intel-3.5
/usr/bin/clang -fno-strict-aliasing -Wsign-compare -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch i386 -arch x86_64 -g -DMAJOR_VERSION=1 -DMINOR_VERSION=0 -I/usr/local/include -I/Library/Frameworks/Python.framework/Versions/3.5/include/python3.5m -c greet.cpp -o build/temp.macosx-10.6-intel-3.5/greet.o
creating build/lib.macosx-10.6-intel-3.5
/usr/bin/clang++ -bundle -undefined dynamic_lookup -arch i386 -arch x86_64 -g     build/temp.macosx-10.6-intel-3.5/greet.o -L/usr/lib -o build/lib.macosx-10.6-intel-3.5/greet.cpython-35m-darwin.so
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9

非常感谢任何帮助。

0 个答案:

没有答案