如何将 .pyd 文件作为 python 模块导入?

che*_*gcj 6 python windows pyd pycharm

我正在使用 PyCharm。我在以下位置有一个 python 脚本:

C:\Users\XYZ\PycharmProjects\Project1\playground.py
Run Code Online (Sandbox Code Playgroud)

playground.py 只有一行代码,如下所示:

import PyTbl
Run Code Online (Sandbox Code Playgroud)

Project1文件夹中有另一个文件:

C:\Users\XYZ\PycharmProjects\Project1\PyTbl.pyd
Run Code Online (Sandbox Code Playgroud)

当我运行 Python 脚本时playground.py,出现以下错误:

ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
  File "C:/Users/XYZ/PycharmProjects/Project1/playground.py", line 1, in <module>
    import PyTbl
SystemError: initialization of PyTbl raised unreported exception
Run Code Online (Sandbox Code Playgroud)

如果我将鼠标悬停playground.py在 PyCharm 编辑器中的 Python 代码行上,我会收到以下错误消息:

"No module named PyTbl"
Run Code Online (Sandbox Code Playgroud)

知道我应该如何将.pyd文件导入 Python 脚本吗?

Ben*_*ari 7

.pyd基本上是一个Windows.dll文件。

.pyd文件是dll’s,但有一些区别。如果你有一个名为 foo.pyd 的 DLL,那么它必须有一个函数PyInit_foo()。然后您可以编写 Python import foo,Python 将搜索foo.pyd(以及foo.py, foo.pyc),如果找到,将尝试调用PyInit_foo()以初始化它。您不要将 .exe 与 链接foo.lib,因为这会导致 Windows 要求存在 DLL。

请注意, 的搜索路径foo.pyd是 PYTHONPATH,与 Windows 用于搜索的路径不同foo.dll。此外,foo.pyd运行您的程序时不需要出现,而如果您将程序与 链接dll,则dll是必需的。当然,foo.pyd如果你想说,是必需的import foo。在 DLL 中,链接在源代码中使用__declspec(dllexport). 在 a 中.pyd,链接在可用函数列表中定义。

参考