如何创建 .pyd 文件?

新手上路,请多包涵

我正在创建一个使用 Python OpenCV 的项目。我的图像处理有点慢,所以我想我可以通过创建一个 .pyd 文件(我在某处读到)来加快代码速度。

我可以使用 Cython 创建一个 .c 文件,但是如何制作一个 .pyd ?虽然它们是一种 .dll ,但我应该先制作一个 .dll 并转换它吗?而且我认为它们不是平台独立的,Unix 上的等价物是什么?

谢谢你的帮助!

原文由 linusg 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 795
2 个回答

您必须在终端中运行 setup.py 文件。这是一个使用 numpy 的例子

try:
    from setuptools import setup
    from setuptools import Extension
except ImportError:
    from distutils.core import setup
    from distutils.extension import Extension

from Cython.Distutils import build_ext
import numpy as np

ext_modules = [Extension("my_code_cython",["my_code_cython.pyx"]),
               Extension("another_code_cython",["another_code_cython.pyx"])]

setup(
    name= 'Generic model class',
    cmdclass = {'build_ext': build_ext},
    include_dirs = [np.get_include()],
    ext_modules = ext_modules)

在终端(Windows 中的 cmd)中,您必须执行命令

python setup.py build_ext --inplace

我认为您已经安装了编译器(例如,Microsoft Visual C++ Compiler Package for Python 2.7),这一点很重要。您可以在 https://github.com/cython/cython/wiki/CythonExtensionsOnWindows 中找到更多信息

原文由 sebacastroh 发布,翻译遵循 CC BY-SA 3.0 许可协议

先决条件

Cython

MinGW-w64 添加到您的 PATH 环境变量

您需要将一个名为 inityourfilename 的函数添加到您的 .py 文件中然后必须通过以下方式制作一个 .c 文件

cython --embed yourfile.py

然后你需要使用 gcc 将它编译成一个 .o 文件,将 -I 之后的文本替换为你的 Python 包含文件夹的路径

如果您的 MinGW 是 64 位,那么此命令

gcc -mdll -O -Wall -IC:\\Users\\yourusername\\AppData\\Local\\Programs\\Python\\Python39\\include -c -DMS_WIN64 yourfile.c

如果您的 MinGW 是 32 位的,请删除 -DMS_WIN64 标志

从 .o 文件制作 .pyd 文件

gcc -shared -LC:\\Users\\yourusername\\AppData\\Local\\Programs\\Python\\Python39\\libs yourfile.o -lpython39 -o yourfile.pyd

将 -L 后的文本替换为您的 libs 文件夹的路径

将 -lpython39 替换为你的 python 版本,即 -lpython38 如果你有 python 3.8

现在通过将其导入另一个文件来检查您的 .pyd 文件

原文由 Anonymous 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏