Python打包生成.pyc和.pyd文件方式
pyd文件是什么?
pyd文件類似于DLL, 一般用C/C++語(yǔ)言編譯而成, 可用作模塊導(dǎo)入Python程序中。
pyd文件僅適用于特定版本的Python, 不同版本間互不兼容, 如Python3.8不支持3.7版本的文件。
pyd文件用C/C++語(yǔ)言編譯而成, 難以被反編譯, 在保護(hù)Python程序源碼上有很好的效果。
而且由于使用了C/C++等低級(jí)語(yǔ)言, 代碼執(zhí)行效率較高。
1.環(huán)境
①pip3 install cython
②安裝Visual Studio C編譯器
啟動(dòng)VisualStudioSetup.exe, 必須選擇C++開(kāi)發(fā), 可選Python開(kāi)發(fā), 點(diǎn)擊安裝。


2.待編譯文件hello.py以及setup.py文件
hello.py文件內(nèi)容如下
def greet(str):
return "hello " + str
setup.py文件內(nèi)容如下
from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension
def main():
# 這里為文件名 可以增加多個(gè)Extension(' ', [' '])
extensions = [Extension('hello', ['hello.py'])] # 待編譯文件名
setup(ext_modules=cythonize(extensions))
if __name__ == '__main__':
main()執(zhí)行打包命令
cmd進(jìn)入hello.py的文件目錄下,執(zhí)行python setup.py build_ext
執(zhí)行成功之后,同目錄會(huì)生成一個(gè)hello.c的文件和build的文件夾,在build文件夾目錄里面存放著編譯好的.pyd文件
3.運(yùn)行調(diào)試
from hello import greet
print(greet("tom"))
現(xiàn)在運(yùn)行打印出hello tom還并未成功,此時(shí)仍是調(diào)用的hello.py文件。
(調(diào)用.pyc、.pyd文件的方式仍是通過(guò)import導(dǎo)入)
刪除hello.py文件,只保留hello.pyc在該目錄,運(yùn)行成功,則說(shuō)明pyc文件成功
刪除hello.pyc文件,從build目錄下拷貝出.pyd并改名為hello.pyd文件,運(yùn)行成功,則說(shuō)明pyd文件成功
4.寫(xiě)在最后
①若沒(méi)有Visual Studio C,則只生成.pyc文件;有,則可生成.pyd文件
②編譯文件hello.py以及setup.py文件的文件名都需要和后續(xù)對(duì)應(yīng)上的。待編譯文件名是什么,則setup代碼里文件名是什么;setup文件名和打包命令文件名是一致的。
③當(dāng)刪除hello.py文件時(shí),導(dǎo)入會(huì)顯示紅色下劃線,如果同目錄下有hello.pyc或hello.pyd文件,則運(yùn)行不會(huì)報(bào)導(dǎo)入失敗錯(cuò)誤
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
用Flask實(shí)現(xiàn)token登錄校驗(yàn)的解決方案
網(wǎng)站、小程序、APP 是否已經(jīng)登錄所代表的狀態(tài),代表一個(gè)概念是登錄態(tài), 我們常用的登錄態(tài)驗(yàn)證方式有cookie,session,token,token提供了另外一種不需要緩存賬戶和密碼的登錄狀態(tài)驗(yàn)證方式,本文給大家介紹了用Flask實(shí)現(xiàn)token登錄校驗(yàn)的解決方案,需要的朋友可以參考下2024-03-03
python3.9和pycharm的安裝教程并創(chuàng)建簡(jiǎn)單項(xiàng)目的步驟
這篇文章主要介紹了python3.9和pycharm的安裝教程并創(chuàng)建簡(jiǎn)單項(xiàng)目的步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
python實(shí)現(xiàn)mask矩陣示例(根據(jù)列表所給元素)
這篇文章主要介紹了python實(shí)現(xiàn)mask矩陣示例(根據(jù)列表所給元素),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
python-pyinstaller、打包后獲取路徑的實(shí)例
今天小編就為大家分享一篇python-pyinstaller、打包后獲取路徑的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
分析Python編程時(shí)利用wxPython來(lái)支持多線程的方法
這篇文章主要介紹了Python編程時(shí)利用wxPython來(lái)支持多線程的方法,本文主要以開(kāi)發(fā)GUI程序時(shí)做線程通訊作為一個(gè)示例來(lái)講解,需要的朋友可以參考下2015-04-04
Python實(shí)現(xiàn)數(shù)據(jù)庫(kù)并行讀取和寫(xiě)入實(shí)例
本篇文章主要介紹了Python實(shí)現(xiàn)數(shù)據(jù)庫(kù)并行讀取和寫(xiě)入實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-06-06
PyTorch學(xué)習(xí):動(dòng)態(tài)圖和靜態(tài)圖的例子
今天小編就為大家分享一篇PyTorch學(xué)習(xí):動(dòng)態(tài)圖和靜態(tài)圖的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂(lè)(實(shí)例代碼)
一年一度的元宵節(jié)來(lái)臨,小編在這里祝大家2022元宵節(jié)快樂(lè),今天小編給大家分享一篇教程關(guān)于Python制作旋轉(zhuǎn)花燈祝大家元宵節(jié)快樂(lè),代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-02-02

