Python 中如何直接 import 某个 dll

2021-01-04 13:15:45 +08:00
 RingSunKaiya
情况:最近在看别人写的代码,发现该目录下只有 dll 和 py 文件,而 Py 文件的开头直接 Import 了这个 dll 文件,通过__file__方法,查看到导入包的路径和名称就是这个 py 文件同目录下的 dll 。
问题:Python 可以直接 import 一个 dll 文件
请问这个 dll 文件是如何生成的,是什么原理?
是 Pythion 代码打包成 dll 还是用 C 写的 dll
在网上查了以下资料 Python import 模块有四种方法
1.使用 python 编写的.py 文件
2.把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py 文件,该文件夹称之为包)
3.使用 C 编写并链接到 python 解释器的内置模块
4.已被编译为共享库或 DLL 的 C 或 C++扩展

Python 引用 dll 是使用的 ctypes
4940 次点击
所在节点    Python
25 条回复
RingSunKaiya
2021-01-05 12:15:13 +08:00
@dinjufen 直接 import dll 的话 其实内部引用的是同名的 pyx,我把后缀 dll 改为 pyx,提示找不到模块,我把 dll 改为 pyd,就可以了,所以说应该是用 Python 代码转的 pyd,然后再改为 dll
RingSunKaiya
2021-01-05 12:16:00 +08:00
@dinjufen 直接 import dll 的话 其实内部引用的是同名的 pyx,我把后缀 dll 改为 pyx,提示找不到模块,我把 dll 改为 pyd,就可以了,所以说应该是用 Python 代码转的 pyd,然后再改为 dll
@XIVN1987
ysc3839
2021-01-05 12:16:31 +08:00
@YaZuiBi 只是看 DLL 导出符号的话不需要安装 VS,可以使用 https://github.com/lucasg/Dependencies
RingSunKaiya
2021-01-05 12:16:34 +08:00
@dinjufen 直接 import dll 的话 其实内部引用的是同名的 pyx,我把后缀 dll 改为 pyx,提示找不到模块,我把 dll 改为 pyd,就可以了,所以说应该是用 Python 代码转的 pyd,然后再改为 dll
@YaZuiBi
RingSunKaiya
2021-01-05 12:17:36 +08:00
毕竟 py 转 pyd 很好实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/741469

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX