无法解决“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:动态模块未定义模块导出功能”的主要内容,如果未能解决你的问题,请参考以下文章

电脑无法识别耳机怎么解决 电脑无法识别耳机解决方法

IINA“无法打开文件和流”解决

无法解决此问题:“无法按聚合分组”

SQL Server(MSSQLSERVER)无法启动怎么解决

如何解决win10无法访问\\

无法打开物理文件 错误 怎么解决