2024-06-06 06:13:14 发布
网友
我有一个用C编写的Python扩展名,我想知道是否应该在Windows下使用文件扩展名DLL或PYD。(我在Linux中会使用什么?)
有什么区别吗(除了文件名之外)?
我找到了an unofficial article。这是pyc的秘密吗? 为什么我找不到关于这个话题的官方文章?
根据Building C and C++ Extensions on Windows的创建自己的项目步骤(Cookbook方法的步骤7)
The output file should be called spam.pyd (in Release mode) or spam_d.pyd (in Debug mode). The extension .pyd was chosen to avoid confusion with a system library spam.dll to which your module could be a Python interface.
因此.pyd文件只是一个被重命名的DLL,以避免混淆。
然而,在linux上,从经验来看,您似乎需要为python DLL使用.so扩展。这只是一个标准的unix共享库。我无法提供python在linux上不更改文件扩展名的来源或原因,但是我可以向您展示如何演示它。在shell中,运行以下命令:
python -vv >>> import fakemodule
您会注意到输出显示:
trying /usr/lib/python2.5/site-packages/fakemodule.so
假设您的Python扩展foo打算用作模块,可以通过import foo访问,那么您不需要知道哪个操作系统上的文件扩展名应该是什么。你只要用distutils。在Windows上会得到一个.pyd,在Linux上会得到一个.so。请阅读这个documentation。
foo
import foo
distutils
Update响应@gecko“”的注释“import foo同时处理两种扩展类型:dll和pyd。这里的分机不重要…“”以下内容:
对于我(Python 2.7.1,Windows 7),python -vv只显示正在搜索的pyd、py、pyw和pyc扩展(按顺序)。如果我在C:\python27\lib\site-packages中有foo.pyd,那么import foo可以工作。如果我将该文件重命名为foo.dll,import foo将失败。
python -vv
C:\python27\lib\site-packages
foo.pyd
foo.dll
pyd文件只是为python导入做好准备的dll文件。
为了区别于普通的dll,我建议在windows中使用.pyd而不是.dll。
这是关于这个问题的官方文件:
http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll
根据Building C and C++ Extensions on Windows的创建自己的项目步骤(Cookbook方法的步骤7)
因此.pyd文件只是一个被重命名的DLL,以避免混淆。
然而,在linux上,从经验来看,您似乎需要为python DLL使用.so扩展。这只是一个标准的unix共享库。我无法提供python在linux上不更改文件扩展名的来源或原因,但是我可以向您展示如何演示它。在shell中,运行以下命令:
您会注意到输出显示:
假设您的Python扩展
foo
打算用作模块,可以通过import foo
访问,那么您不需要知道哪个操作系统上的文件扩展名应该是什么。你只要用distutils
。在Windows上会得到一个.pyd,在Linux上会得到一个.so。请阅读这个documentation。Update响应@gecko“”的注释“import foo同时处理两种扩展类型:dll和pyd。这里的分机不重要…“”以下内容:
对于我(Python 2.7.1,Windows 7),
python -vv
只显示正在搜索的pyd、py、pyw和pyc扩展(按顺序)。如果我在C:\python27\lib\site-packages
中有foo.pyd
,那么import foo
可以工作。如果我将该文件重命名为foo.dll
,import foo
将失败。pyd文件只是为python导入做好准备的dll文件。
为了区别于普通的dll,我建议在windows中使用.pyd而不是.dll。
这是关于这个问题的官方文件:
http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll
相关问题 更多 >
编程相关推荐