win10 下pycharm+anaconda 编译生成pyd文件

由于生产部署的问题,需要把用python写的深度学习代码编译为可被调用的文件。上网搜索了下,暂时了解到win10下pyd文件比较流行。下面是直接引用某位博主的结论,个人感觉总结的很好。其中Cython库将已有的Python代码转化为C语言的代码,并作为Python的built-in模块扩展。

Python的文件类型介绍:

.py       python的源代码文件

.pyc     Python源代码import后,编译生成的字节码

.pyo     Python源代码编译优化生成的字节码。pyo比pyc并没有优化多少,只是去掉了断言

.pyd     Python的动态链接库(Windows平台)

.py, .pyc, .pyo 运行速度几乎无差别,只是pyc, pyo文件加载的速度更快,不能用文本编辑器查看内容,反编译不太容易

一、系统环境

win10 64位+anaconda的python环境(此处对应envs为tf_2c)+pycharm

 

二、利用cython创建pyd文件

先安装cython,如果在线安装不了,在https://www.lfd.uci.edu/~gohlke/pythonlibs/下载后本地安装即可。

1.编写一个测试代码文件utils.py放在。。。/pyd_test这个project中

class utils:
    def fun_Hello(self, s):
        return s

2.在pyd_test这个project中创建一个setup.py文件

from setuptools import setup
from Cython.Build import cythonize

setup(
      name='test',
      ext_modules=cythonize('utils.py'),
)

3.在pycharm命令行调用

进入tf_2c这个虚拟环境中(必须进入该环境中,不然无法调用相应的库)

win10 下pycharm+anaconda 编译生成pyd文件_第1张图片

在terminal中回到当前的project路径,输入以下cmd命令:

python setup.py build_ext --inplace

编译成功后可以看到,project中会出现对应的.c和.pyd文件,如下图所示:

win10 下pycharm+anaconda 编译生成pyd文件_第2张图片

备注:在anaconda prompt中打开对应envs和路径,输入同样的cmd命令亦可实现。

三、测试

在对应的project中创建一个test.py文件,输入以下代码,编译

from utils import utils

if __name__ == '__main__':
    obj1 = utils()
    print(obj1.fun_Hello("pyd测试"))

若出现对应字符就为编译正确如下图所示:

注意:

terminal一定也要进入对应的envs,不然无法调用cython。由于之前一直使用anaconda中的spyder作为IDE,没用过pycharm,在此处被坑了一个上午。望后来者引以为戒!

参考文献:

https://blog.csdn.net/feijiges/article/details/77932382

你可能感兴趣的:(python编程基础知识)