这是我尝试编译和安装的python软件包的the link。我已经尝试了数小时可以在网上找到的内容,但无法克服ImportError
。
该包装具有以下内容。
其setup.py具有以下内容。这里有两个模块。一个是带有sparse_learning
的python包装程序包,另一个是名为proj_module
的c扩展模块。
我按照此处https://docs.python.org/3.6/extending/building.html中所述的步骤在Ubuntu 18.04上进行编译和安装。 没有错误消息。
sudo python3 setup.py build_ext --inplace
sudo python3 setup.py安装
然后,当我尝试加载C扩展模块proj_module
时,发生错误“ ImportError:动态模块未定义模块导出功能”。
python3 -c“导入proj_module”
我尝试应用在线找到的解决方案,包括使用sudo apt purge python2.7-minimal
卸载Python2,或将python3站点软件包路径添加到bashrc。但是,它们都不起作用。
我只知道它最初是为Python 2编写的。然后在main_wrapper.c
中进行了两项修改,使其可以在Python 3中运行。
答案 0 :(得分:1)
似乎您的Python 3模块中混入了一些Python 2样式的代码。您只需要更换
PyMODINIT_FUNC initproj_module() {
使用
PyMODINIT_FUNC PyInit_proj_module() {
在您的main_wrapper.c
文件中。