.pyd 未显示预期的模块

问题描述 投票:0回答:1

我有一个从c程序编译的

freenect.pyd
文件,但是当我导入函数并调用
dir(freenect)
时,它的输出只是
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
,其中没有可以调用的函数。我已经检查了依赖项步行器,我期望的函数位于模块导入中,唯一的导出是 PyInit_freenect 我认为这是预期的。总而言之,我只是对为什么我想调用的函数位于依赖项步行器中但我无法访问它们感到困惑。

我的目录结构如下

site-packages
|-freenect
  |-freenect.pyd
  |-libfreenect.dll
  |-libfreenect_sync.dll

我在那里有 .dll 文件,因为它们是依赖项步行器中显示的依赖项。那么是否是 .pyd 文件损坏或其他问题,或者是否有我错过的额外初始化步骤。

Cython 生成了一个名为 freenect3.c 的文件,然后将其编译为 freenect.dll,然后我将扩展名重命名为 .dll (我认为你可以这样做,在我看来 .dll 和 .pyd 几乎相同) .

如果有帮助的话,我将提供我的依赖步行者的屏幕截图。

再次感谢任何帮助。

python c cython dllimport pyd
1个回答
0
投票

将 .pyd 和依赖 DLL 从

python/Lib/site-packages
移至
python/DLLs
。我猜这与 python 读取模块或其他东西的方式有关。

© www.soinside.com 2019 - 2024. All rights reserved.