windows平台 python生成 pyd文件
Python的文件類型介紹:
.py ? ? ? python的源代碼文件
.pyc ? ? Python源代碼import后,編譯生成的字節(jié)碼
.pyo ? ? Python源代碼編譯優(yōu)化生成的字節(jié)碼。pyo比pyc并沒有優(yōu)化多少,只是去掉了斷言
.pyd ? ? Python的動(dòng)態(tài)鏈接庫(Windows平臺(tái))
.py, .pyc, .pyo 運(yùn)行速度幾乎無差別,只是pyc, pyo文件加載的速度更快,不能用文本編輯器查看內(nèi)容,反編譯不太容易
?
本文的目標(biāo)是將test.py文件生成test.c文件,然后將test.c文件作為Python源碼的一部分,重新編譯生成Python,使用時(shí)直接import test即可使用test模塊。
?
Cython基本介紹:
文檔中這樣總結(jié)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.
是一個(gè)Python編程語言的編譯器,寫C擴(kuò)展就像寫Python代碼一樣容易。
其最重要的功能是:
- write Python code that calls back and forth?from and to C or C++ code natively at any point.
即 將Python代碼翻譯為C代碼。之后就可以像前面文章介紹的C語言擴(kuò)展Python模塊使用這些C代碼了。
?
?
Cython基本用法:
?在使用Cython編譯Python代碼時(shí),務(wù)必要安裝C/C++編譯器,微軟為Python提供了專用的編譯器Microsoft Visual C++ Compiler for Python 2.7(包含32位和64位) 下載地址:?http://aka.ms/vcpython27?百度云鏈接: https://pan.baidu.com/s/143jxjyQFtb_NCIWXt0DVWA 提取碼: 5ick?
1.下載完成并安裝。以本機(jī)為例,安裝完成后的路徑為:?
| 1 | C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C++?for?Python\9.0 |
2.修改python代碼
? ?修改python安裝目錄下Lib\distutils\msvc9compiler.py文件(如有必要可能msvccompiler.py文件也需要做相應(yīng)更改,視系統(tǒng)而定),找到get_build_version方法直接return 9.0
? ?然后再找到find_vcvarsall方法直接返回vcvarsall.bat的路徑(以自己機(jī)器安裝后的路徑為準(zhǔn))
? 例如??return?r'C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\vcvarsall.bat'
2. 安裝Cython庫
? ?pip install Cython
3. 編寫一個(gè)測試代碼文件test.py放在D:/test/test.py
? ?然后在同一目錄下,新建一個(gè)setup.py文件,內(nèi)容如下:
? cythonize()是Cython提供將Python代碼轉(zhuǎn)換成C代碼的API,
? setup是Python提供的一種發(fā)布Python模塊的方法。
4. 使用命令行編譯Python代碼:
3.上述完成之后就可以在windwos下正常編譯python的C擴(kuò)展。執(zhí)行如下命令
| 1 | python setup.py install |
當(dāng)然也可以建立一個(gè)windows的二進(jìn)制包:
| 1 | python setup.py bdist_wininst |
當(dāng)然也可以直接編譯到當(dāng)前目錄:
| 1 | python setup.py build_ext --inplace |
build_ext是指明python生成C/C++的擴(kuò)展模塊(build C/C++ extensions (compile/link to build directory))
--inplace指示 將編譯后的擴(kuò)展模塊直接放在與test.py同級(jí)的目錄中。
參考資料:
https://www.cnblogs.com/jianmu/p/7497274.html?utm_source=debugrun&utm_medium=referral
http://www.cnblogs.com/lazyboy/p/4017567.html
轉(zhuǎn)載于:https://www.cnblogs.com/shuangpang/p/10528694.html
總結(jié)
以上是生活随笔為你收集整理的windows平台 python生成 pyd文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JWT(JSON Web Token)
- 下一篇: day 0314函数的进阶