当前位置: 萬仟网 > IT编程>脚本编程>Python > windows平台 python生成 pyd文件

windows平台 python生成 pyd文件

2019年03月15日 07:24  | 萬仟网IT编程  | 我要评论

python的文件类型介绍:

.py       python的源代码文件

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

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

.pyd     python的动态链接库(windows平台)

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

 

本文的目标是将test.py文件生成test.c文件,然后将test.c文件作为python源码的一部分,重新编译生成python,使用时直接import test即可使用test模块。

 

cython基本介绍:

文档中这样总结cython:

cython is an optimising static compiler for both the python programming language and the extended cython programming language (based on pyrex). it makes writing c extensions for python as easy as python itself.

是一个python编程语言的编译器,写c扩展就像写python代码一样容易。

其最重要的功能是:

  • write python code that calls back and forth from and to c or c++ code natively at any point.

即 将python代码翻译为c代码。之后就可以像前面文章介绍的c语言扩展python模块使用这些c代码了。

 

 

cython基本用法:

 在使用cython编译python代码时,务必要安装c/c++编译器,微软为python提供了专用的编译器microsoft visual c++ compiler for python 2.7(包含32位和64位) 下载地址:  百度云链接: https://pan.baidu.com/s/15zfw00fxdns9h6kgvesnsq 提取码: hhhy

1.下载完成并安装。以本机为例,安装完成后的路径为: 

1
c:\users\administrator\appdata\local\programs\common\microsoft\visual c++ for python\9.0

2.修改python代码

   修改python安装目录下lib\distutils\msvc9compiler.py文件(如有必要可能msvccompiler.py文件也需要做相应更改,视系统而定),找到get_build_version方法直接return 9.0

   然后再找到find_vcvarsall方法直接返回vcvarsall.bat的路径(以自己机器安装后的路径为准)

  例如  return r'c:\users\administrator\appdata\local\programs\common\microsoft\visual c++ for python\9.0\vcvarsall.bat'

2. 安装cython库

   pip install cython

3. 编写一个测试代码文件test.py放在d:/test/test.py

   然后在同一目录下,新建一个setup.py文件,内容如下:

  cythonize()是cython提供将python代码转换成c代码的api,

  setup是python提供的一种发布python模块的方法。

4. 使用命令行编译python代码:

3.上述完成之后就可以在windwos下正常编译python的c扩展。执行如下命令

1
python setup.py install

当然也可以建立一个windows的二进制包:

1
python setup.py bdist_wininst

当然也可以直接编译到当前目录:

1
python setup.py build_ext --inplace

build_ext是指明python生成c/c++的扩展模块(build c/c++ extensions (compile/link to build directory))

--inplace指示 将编译后的扩展模块直接放在与test.py同级的目录中。


参考资料:

https://www.cnblogs.com/jianmu/p/7497274.html?utm_source=debugrun&utm_medium=referral

http://www.cnblogs.com/lazyboy/p/4017567.html






如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

◎已有 0 人评论

Copyright © 2019  萬仟网 保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com