我有一个从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 几乎相同) .
再次感谢任何帮助。
将 .pyd 和依赖 DLL 从
python/Lib/site-packages
移至 python/DLLs
。我猜这与 python 读取模块或其他东西的方式有关。