首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建.pyd文件?

如何创建.pyd文件?
EN

Stack Overflow用户
提问于 2016-04-28 17:46:56
回答 4查看 31.6K关注 0票数 11

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

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

谢谢你的帮助!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-04-29 19:49:16

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

代码语言:javascript
复制
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)中,必须执行以下命令

代码语言:javascript
复制
python setup.py build_ext --inplace

重要的是,我认为您已经安装了编译器(例如,MicrosoftVisualPython2.7的C++编译器包)。您可以在https://github.com/cython/cython/wiki/CythonExtensionsOnWindows中找到更多信息。

票数 13
EN

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2021-09-06 02:54:46

先决条件 Cython MinGW-w64添加到PATH环境变量中

您需要将名为inityourfilename的函数添加到您的.py文件中,然后必须通过

代码语言:javascript
复制
cython --embed yourfile.py

然后,您需要使用gcc将它编译成一个.o文件,用指向文件夹的路径替换-I后的文本。

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

代码语言:javascript
复制
gcc -mdll -O -Wall -IC:\\Users\\yourusername\\AppData\\Local\\Programs\\Python\\Python39\\include -c -DMS_WIN64 yourfile.c

如果MinGW为32位,则移除-DMS_WIN64标志

从.pyd文件生成.o文件

代码语言:javascript
复制
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文件导入另一个文件来检查它

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36921961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档