无法解决“ImportError:动态模块未定义模块导出功能”
Posted
技术标签:
【中文标题】无法解决“ImportError:动态模块未定义模块导出功能”【英文标题】:Unable to solve "ImportError: dynamic module does not define module export function" 【发布时间】:2019-03-21 09:33:29 【问题描述】:the link 指向我正在尝试编译和安装的 python 包。我已经尝试了几个小时可以在网上找到的东西,但无法克服 ImportError
。
包有以下内容。
它的setup.py有以下内容。这里有两个模块。一个是带有sparse_learning
的python wrapper包,另一个是一个名为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 install
然后当我尝试加载C扩展模块proj_module
时,出现错误“ImportError: dynamic module does not define module export function”。
python3 -c "导入项目模块"
我尝试应用在网上找到的解决方案,包括使用sudo apt purge python2.7-minimal
卸载 Python2,或将 python3 站点包路径添加到 bashrc。然而,他们都没有工作。
我只知道它最初是为 Python 2 编写的。然后在 main_wrapper.c
中进行了两次修改,以便它可以为 Python 3 运行。它们看起来对我来说是正确的......
添加:
更改:
【问题讨论】:
代码sn-ps推荐使用文字代替图片。 【参考方案1】:您的 Python 3 模块中似乎混合了一些 Python 2 风格的代码。你只需要更换
PyMODINIT_FUNC initproj_module()
与
PyMODINIT_FUNC PyInit_proj_module()
在您的 main_wrapper.c
文件中。
【讨论】:
问这个问题可能有点晚了,但我正在经历同样的问题,我们在哪里可以找到 python 3 和 python 2 的文档?似乎有很多差异很难找到文档。 老实说,我不记得我在哪里找到的!可能是源头潜水。我希望我能提供更多帮助。【参考方案2】:也许这会有所帮助,它对我有用 https://docs.microsoft.com/en-us/visualstudio/python/working-with-c-cpp-python-in-visual-studio?view=vs-2022 在这个部分: this pic shows where the answer is
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review以上是关于无法解决“ImportError:动态模块未定义模块导出功能”的主要内容,如果未能解决你的问题,请参考以下文章