<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        手動(dòng)實(shí)現(xiàn)把python項(xiàng)目發(fā)布為exe可執(zhí)行程序過(guò)程分享

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:40:48
        文檔

        手動(dòng)實(shí)現(xiàn)把python項(xiàng)目發(fā)布為exe可執(zhí)行程序過(guò)程分享

        手動(dòng)實(shí)現(xiàn)把python項(xiàng)目發(fā)布為exe可執(zhí)行程序過(guò)程分享:1. 手動(dòng)制作python的exe可執(zhí)行程序Python沒(méi)有內(nèi)建一個(gè)編譯為exe的功能。給python程序的部署帶來(lái)不少的麻煩。所以就會(huì)出現(xiàn)一些py2exe之類(lèi)的很不錯(cuò)的工具,用于自動(dòng)把.py文件編譯為.exe文件。 最近抽空研究了一下手動(dòng)實(shí)現(xiàn)類(lèi)似py2exe的功能,希望加強(qiáng)對(duì)p
        推薦度:
        導(dǎo)讀手動(dòng)實(shí)現(xiàn)把python項(xiàng)目發(fā)布為exe可執(zhí)行程序過(guò)程分享:1. 手動(dòng)制作python的exe可執(zhí)行程序Python沒(méi)有內(nèi)建一個(gè)編譯為exe的功能。給python程序的部署帶來(lái)不少的麻煩。所以就會(huì)出現(xiàn)一些py2exe之類(lèi)的很不錯(cuò)的工具,用于自動(dòng)把.py文件編譯為.exe文件。 最近抽空研究了一下手動(dòng)實(shí)現(xiàn)類(lèi)似py2exe的功能,希望加強(qiáng)對(duì)p

        1. 手動(dòng)制作python的exe可執(zhí)行程序Python沒(méi)有內(nèi)建一個(gè)編譯為exe的功能。給python程序的部署帶來(lái)不少的麻煩。所以就會(huì)出現(xiàn)一些py2exe之類(lèi)的很不錯(cuò)的工具,用于自動(dòng)把.py文件編譯為.exe文件。

        最近抽空研究了一下手動(dòng)實(shí)現(xiàn)類(lèi)似py2exe的功能,希望加強(qiáng)對(duì)python的了解。結(jié)果還相當(dāng)不錯(cuò)。把結(jié)果記錄下來(lái),與大家共享。

        1.1. 原理文中所描述的方法,基于python的以下幾個(gè)功能

        1) python程序運(yùn)行時(shí),會(huì)在sys.path指定的路徑中查找?guī)煳募?
        2) python從2.3開(kāi)始,支持從zip文件中import庫(kù)(支持.py,.pyc和.pyo,但不支持.pyd)
        3) python提供C API,讓c語(yǔ)言的程序,可以很方便的調(diào)用python的程序

        1.2. 實(shí)際步驟注:假設(shè)python安裝在c:\python25目錄中,最后的可執(zhí)行文件放到d:\dist目錄中

        1) 先去c:\python25\Lib目錄,把所有文件都復(fù)制出來(lái),比如復(fù)制到d:\pythonlib目錄中
        2) 開(kāi)一個(gè)cmd窗口,進(jìn)入d:\pythonlib目錄中,運(yùn)行 python -OO compileall.py -f . 把lib中的.py文件都編譯成.pyo文件
        3) 刪除d:\pythonlib目錄中所有的.py和.pyc文件,因?yàn)槲覀冎灰?pyo文件就可以讓這些庫(kù)運(yùn)行了。
        4) 刪除目錄中所有用不著的文件,比如curses,test,idlelib,msilib等,以減少生成文件的體積。
        5) 把這些庫(kù)打包成一個(gè)zip文件,比如stdlib.zip,放到d:\dist目錄中
        6) 把c:\python25\dlls目錄中的.pyd和.dll文件,復(fù)制到d:\dist\dlls目錄中,當(dāng)然,刪除不可能用到的一些文件_msi.pyd,_ssl.pyd等等,可以減少文件的體積
        7) 把自己寫(xiě)的程序,也按步驟2至步驟5所說(shuō)的方法,打成一個(gè)mysrc.zip包,放到d:\dist目錄中。 注意:自己寫(xiě)的程序的入口應(yīng)該是main.pyo文件
        8) 用以下C程序編譯出一個(gè)可執(zhí)行文件,比方說(shuō)叫runpy.exe,也放到d:\dist中。

        代碼如下:


        #include
        #include
        #include
        #include

        int main()
        {
        // 得到當(dāng)前可執(zhí)行文件所在的目錄
        char szPath[10240];
        char szCmd[10240];
        GetModuleFileName(NULL, szPath, sizeof(szPath));
        char* p = strrchr(szPath, '\\');
        if (p == NULL)
        {
        printf("Get module file name error!\n");
        return -1;
        }

        *p = 0;

        // 設(shè)定運(yùn)行時(shí)的PATH
        sprintf(szCmd, "PATH=%s\\dlls;%%PATH%%", szPath);
        _putenv(szCmd);

        // 把sys.path設(shè)定為['.', '自己的源代碼zip文件', '標(biāo)準(zhǔn)庫(kù)zip文件', 'dll目錄']
        // 然后調(diào)用main模塊
        sprintf(szCmd,
        "import sys\n"
        "sys.path=['.', r'%s\\mysrc.zip', r'%s\\stdlib.zip', r'%s\\dlls']\n"
        "import main\n",
        szPath, szPath, szPath);

        Py_OptimizeFlag = 2;
        Py_NoSiteFlag = 1;
        Py_Initialize();
        PyRun_SimpleString(szCmd);
        return 0;
        }

        9. 把python25.dll放到d:\dist目錄中。

        結(jié)束語(yǔ)

        這樣來(lái),d:\dist目錄中,一共只有4個(gè)文件加一個(gè)目錄:
        dlls目錄:用于存放所有的dll文件和pyd文件
        stdlib.zip文件:用于存放所有的python的.pyo文件格式的標(biāo)準(zhǔn)庫(kù)
        mysrc.zip文件:用于存放自己寫(xiě)的程序。注意,自己寫(xiě)的程序的入口在main.pyo中。
        runpy.exe文件:程序的啟動(dòng)文件,啟動(dòng)后會(huì)設(shè)定python的sys.path,然后調(diào)用main模塊
        python25.dll文件:python的核心dll,runpy.exe依賴(lài)于這個(gè)dll

        --------------------------------------------------------------------------------

        哈哈,相當(dāng)?shù)暮?jiǎn)潔明了吧。一共才4個(gè)文件一個(gè)目錄,5MB都不到哦。
        注:當(dāng)然,這種打包方式第一次做的時(shí)候比較麻煩,但之后就可以只要把自己的程序打包就好了,其它的不用變。
        而且,如果自己的程序經(jīng)常做改動(dòng)的話,自己的程序也可以不打包,直接放到d:\dist中,反正runpy.exe啟動(dòng)程序的時(shí)候,只要能正常運(yùn)行import main就可以了。

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        手動(dòng)實(shí)現(xiàn)把python項(xiàng)目發(fā)布為exe可執(zhí)行程序過(guò)程分享

        手動(dòng)實(shí)現(xiàn)把python項(xiàng)目發(fā)布為exe可執(zhí)行程序過(guò)程分享:1. 手動(dòng)制作python的exe可執(zhí)行程序Python沒(méi)有內(nèi)建一個(gè)編譯為exe的功能。給python程序的部署帶來(lái)不少的麻煩。所以就會(huì)出現(xiàn)一些py2exe之類(lèi)的很不錯(cuò)的工具,用于自動(dòng)把.py文件編譯為.exe文件。 最近抽空研究了一下手動(dòng)實(shí)現(xiàn)類(lèi)似py2exe的功能,希望加強(qiáng)對(duì)p
        推薦度:
        • 熱門(mén)焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門(mén)推薦

        專(zhuān)題
        Top
        主站蜘蛛池模板: 日韩免费高清播放器| 亚洲精华国产精华精华液好用| 日韩大片在线永久免费观看网站| 亚洲已满18点击进入在线观看| 免费av片在线观看网站| 亚洲精品无码乱码成人| 99久久免费国产特黄| 亚洲日韩中文无码久久| 久久久久久亚洲精品影院| 免费观看激色视频网站(性色)| 亚洲不卡无码av中文字幕| 免费无码国产在线观国内自拍中文字幕 | 国内成人精品亚洲日本语音| 国产99久久久久久免费看| 欧洲精品成人免费视频在线观看| 亚洲成人午夜电影| 在线观看免费宅男视频| 国产产在线精品亚洲AAVV| 国产成人综合亚洲AV第一页| 亚洲第一第二第三第四第五第六| 国产精品久免费的黄网站| 亚洲精品美女久久久久| 免费无码精品黄AV电影| 美女免费精品高清毛片在线视| 91嫩草国产在线观看免费| 国产精品久久久久久亚洲小说 | 真人无码作爱免费视频| 国产成人综合亚洲AV第一页 | 毛片在线播放免费观看| 亚洲欧洲精品国产区| 成人黄动漫画免费网站视频| 亚洲欧洲中文日产| 国产成人涩涩涩视频在线观看免费| 污网站免费在线观看| 亚洲日本va午夜中文字幕一区| 免费毛片a在线观看67194| 色噜噜综合亚洲av中文无码| 日本在线免费观看| 亚洲日韩一区二区三区| 我要看WWW免费看插插视频| 一级看片免费视频囗交|