我正在创建一个使用Python OpenCV的项目。我的图像处理有点慢,所以我想我可以通过创建一个.pyd文件来使代码更快(我在某个地方读到的)。
我可以使用Cython创建一个.c文件,但是如何创建一个.pyd呢?虽然它们是一种.dll,但我应该先做一个.dll并转换它吗?我认为它们并不是独立于平台的,在Unix上什么是等价的呢?
谢谢你的帮助!
发布于 2016-04-29 19:49:16
您必须在终端中运行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重要的是,我认为您已经安装了编译器(例如,MicrosoftVisualPython2.7的C++编译器包)。您可以在https://github.com/cython/cython/wiki/CythonExtensionsOnWindows中找到更多信息。
发布于 2021-08-23 15:10:23
如果尝试使用cython和Visual找到答案,将python代码转换为pyd( ),那么您将得到一个模糊的答案。因为,由于与后续版本的兼容性问题,您希望工作的可视化代码可能不会出现。例如,1900年,1929年的msvc。
您将需要编辑cygwin编译器中的数据,以完成工作。如果您想要使用MingW,那么还需要包括在disutils中使用的编译器的配置。
一个非常简单的方法是我们可以使用Nuitka,将python代码转换为C和Python动态库是非常简单和可靠的。不需要配置,不需要添加支持。
让我们抓住最基本的
1)。安装nuitka,pip安装nuitka
2)。从Sourceforge安装MingW
3)。将mingW添加到路径中
现在一切都很顺利。4).Open cmd作为管理员,类型为python -m nuitka --模块file.py。
Nuitka将在当前目录中创建file.c、file.pyi(用于导入)和file.cp39_architecture.pyd。从file.pyd中,您可以直接将模块导入到您的main.py中,这将是非常快速的。
但是,您希望创建独立的应用程序,然后尝试,python -m nuitkafile.py。
发布于 2021-09-06 02:54:46
您需要将名为inityourfilename的函数添加到您的.py文件中,然后必须通过
cython --embed yourfile.py然后,您需要使用gcc将它编译成一个.o文件,用指向文件夹的路径替换-I后的文本。
如果您的MinGW是64位,那么这个命令
gcc -mdll -O -Wall -IC:\\Users\\yourusername\\AppData\\Local\\Programs\\Python\\Python39\\include -c -DMS_WIN64 yourfile.c如果MinGW为32位,则移除-DMS_WIN64标志
从.pyd文件生成.o文件
gcc -shared -LC:\\Users\\yourusername\\AppData\\Local\\Programs\\Python\\Python39\\libs yourfile.o -lpython39 -o yourfile.pyd 用libs文件夹的路径替换-L后的文本 如果您有python3.8,就用您的python版本ie -lpython38替换-lpython38
现在,通过将.pyd文件导入另一个文件来检查它
https://stackoverflow.com/questions/36921961
复制相似问题