无法解决“ ImportError:动态模块未定义模块导出功能”

时间:2019-03-21 09:33:30

标签: python python-3.x

这是我尝试编译和安装的python软件包的the link。我已经尝试了数小时可以在网上找到的内容,但无法克服ImportError

该包装具有以下内容。

  

enter image description here

其setup.py具有以下内容。这里有两个模块。一个是带有sparse_learning的python包装程序包,另一个是名为proj_module的c扩展模块。

  

enter image description here

我按照此处https://docs.python.org/3.6/extending/building.html中所述的步骤在Ubuntu 18.04上进行编译和安装。 没有错误消息

  

sudo python3 setup.py build_ext --inplace   enter image description here

     

sudo python3 setup.py安装

然后,当我尝试加载C扩展模块proj_module时,发生错误“ ImportError:动态模块未定义模块导出功能”。

  

python3 -c“导入proj_module”

     

enter image description here

我尝试应用在线找到的解决方案,包括使用sudo apt purge python2.7-minimal卸载Python2,或将python3站点软件包路径添加到bashrc。但是,它们都不起作用。 enter image description here


我只知道它最初是为Python 2编写的。然后在main_wrapper.c中进行了两项修改,使其可以在Python 3中运行。

  

已添加:   enter image description here

     

已更改:   enter image description here

1 个答案:

答案 0 :(得分:1)

似乎您的Python 3模块中混入了一些Python 2样式的代码。您只需要更换

PyMODINIT_FUNC initproj_module() {

使用

PyMODINIT_FUNC PyInit_proj_module() {

在您的main_wrapper.c文件中。