我正在创建一个使用 Python OpenCV 的项目。我的图像处理有点慢,所以我想我可以通过创建一个 .pyd
文件(我在某处读到)来加快代码速度。
我可以使用 Cython 创建一个 .c
文件,但是如何制作一个 .pyd
?虽然它们是一种 .dll
,但我应该先制作一个 .dll
并转换它吗?而且我认为它们不是平台独立的,Unix 上的等价物是什么?
谢谢你的帮助!
原文由 linusg 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在创建一个使用 Python OpenCV 的项目。我的图像处理有点慢,所以我想我可以通过创建一个 .pyd
文件(我在某处读到)来加快代码速度。
我可以使用 Cython 创建一个 .c
文件,但是如何制作一个 .pyd
?虽然它们是一种 .dll
,但我应该先制作一个 .dll
并转换它吗?而且我认为它们不是平台独立的,Unix 上的等价物是什么?
谢谢你的帮助!
原文由 linusg 发布,翻译遵循 CC BY-SA 4.0 许可协议
先决条件
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 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
您必须在终端中运行
setup.py
文件。这是一个使用numpy
的例子在终端(Windows 中的 cmd)中,您必须执行命令
我认为您已经安装了编译器(例如,Microsoft Visual C++ Compiler Package for Python 2.7),这一点很重要。您可以在 https://github.com/cython/cython/wiki/CythonExtensionsOnWindows 中找到更多信息