python:.py文件转.dll文件(.pyd文件)

基于python,把python文件转为.dll文件,我查了很多方法,没有能把python文件直接转.dll文件的。.py要转dll文件都是先转成.pyd文件,然后再把.pyd这个后缀改成.dll,如此才成功地把.py文件转为了.dll文件。.py文件转.pyd文件,我综合了我搜索到地教程,写成以下的三个方法。下面的方法都是基于我安装了anaconda,以及c++语言相关的程序(c++相关程序是个坑,要必须安装的,否者转不成功的)

方法一

第一步,打开cmd(命令行),安装第三方库easycython,输入以下代码(提醒:这里我开头说过我是安装了anaconda的,并且把anaconda的环境变量配置到系统的环境变量了,配置环境变量可以参考这篇博客:添加anaconda环境变量

pip install easycython

第二步,创建一个.py文件,如test.py,文件内容如下:

def test():
    print("调用成功")
    ruturn 11

接着把 test.py 文件重命名为 test.pyx

第三步,打开cmd进入test.pyx 文件所在目录,输入以下代码:

easycython *.pyx

得到如下图,则py文件转.pyd文件完成

 图中黄线是我进去.pyx文件所在的文件夹(目录)的操作,红线则是说明转换完成了

方法二

第一步,在anaconda已创建的环境中安装cython库,代码如下:

pip install Cython

第二步,创建一个名为 py_to_pyd.py 文件,内容如下代码:

import Cython.Build
import distutils.core

def py2c(file):
    cpy = Cython.Build.cythonize(file)  # 返回distutils.extension.Extension对象列表

    distutils.core.setup(
        name='pyd的编译',  # 包名称
        version="1.0",  # 包版本号
        ext_modules=cpy,  # 扩展模块
        author="wode",  # 作者
        author_email='wode@163.com'  # 作者邮箱
    )


if __name__ == '__main__':
    file = "atest.py"#需要转的py文件的名字(有时候可以写文件的绝对路径)
    py2c(file)

 其中 atest.py 为要转的py文件

第三步,在PyCharm中打开Terminal终端,输入一下代码:

python py_to_dll.py build_ext --inplace

如图所示

得到下图,则说明转换完成

 用这个方法的好处是,不用考虑python的版本问题,即调用时不会出现下面矩形框中的问题

 同时图中椭圆框中,导入时虽然出现红线,但是不影响调用

方法三

算了我不想写了,参考一下这篇博客吧

https://blog.csdn.net/kdongyi/article/details/102678595

物联沃分享整理
物联沃-IOTWORD物联网 » python:.py文件转.dll文件(.pyd文件)

发表评论