日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

手工将python程序发布为exe执行程序 [转]

發(fā)布時(shí)間:2025/3/14 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手工将python程序发布为exe执行程序 [转] 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 手動(dòng)制作python的exe可執(zhí)行程序Python沒(méi)有內(nèi)建一個(gè)編譯為exe的功能。給python程序的部署帶來(lái)不少的麻煩。所以就會(huì)出現(xiàn)一些py2exe之類的很不錯(cuò)的工具,用于自動(dòng)把.py文件編譯為.exe文件。
最近抽空研究了一下手動(dòng)實(shí)現(xiàn)類似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 <Python.h>
#include <Windows.h>
#include <stdlib.h>
#include <stdio.h>

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依賴于這個(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就可以了。

轉(zhuǎn)載于:https://www.cnblogs.com/starspace/archive/2008/10/22/1317134.html

總結(jié)

以上是生活随笔為你收集整理的手工将python程序发布为exe执行程序 [转]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 7x7x7x人成影视 | 久色视频在线播放 | 亚洲黄色a级片 | 少妇被黑人到高潮喷出白浆 | 日韩三级视频在线播放 | 夜夜夜爽| 91丨porny丨首页 | 午夜精品在线 | 超碰精品在线 | 欧美日韩一区二区三区 | 欧美一区二区三区免费 | 亚洲精品国产精品国自产在线 | 女生扒开腿让男生操 | 免费成人小视频 | 1024视频在线 | 中文字幕资源在线 | 黑人精品一区二区 | 色又黄又爽 | 亚洲aⅴ乱码精品成人区 | 久久久久久久久久免费 | 一区二区三区在线观看视频 | 人操人人 | 色偷偷噜噜噜亚洲男人的天堂 | 黄色一级带 | 婷婷资源网 | 欧美久久一级 | 成人免费一区 | 无码gogo大胆啪啪艺术 | 国产欧美综合一区二区三区 | 福利一区视频 | 国产精品视频网址 | 主播一区二区 | 亚洲二区在线观看 | 高潮一区二区三区乱码 | 能看毛片的网站 | 无码一区二区三区在线观看 | 亚洲国产精品成人无久久精品 | 欧美激情视频一区二区三区 | 老女人毛片 | 国产又粗又长又黄的视频 | 波多野结衣免费在线视频 | 在线亚洲人成电影网站色www | 天天碰天天碰 | 亚洲中文字幕无码不卡电影 | 国产精品99久久免费黑人人妻 | hitomi一区二区三区精品 | 第一福利在线视频 | 好看的中文字幕电影 | 欧性猛交ⅹxxx乱大交 | www欧美精品 | 中文字幕亚洲区 | 欧洲女女同性videoso | 视频在线看| 久久狠| 久久潮 | 国产在线观看a | 在线观看亚洲国产 | 日本少妇激情视频 | 免费se99se | 久久久久久1 | 国产精品18久久久久久vr下载 | 亚洲精选91 | 伊人中文字幕在线 | 亚洲 欧美 日韩 在线 | 国产乱子伦精品无码专区 | 亚洲午夜福利在线观看 | 成人动漫av | 成av人在线观看 | 亚洲精品日韩av | 羞羞涩涩视频 | 日韩激情毛片 | 国产乱淫av麻豆国产 | 中文字幕亚洲日本 | 成人av资源网 | 91精品视频在线播放 | 久久综合福利 | 亚洲黄色片子 | 成熟人妻av无码专区 | 另类中文字幕 | 色七七桃花综合影院 | 99精品偷自拍 | 毛片aaaa| 密臀av一区二区 | 91一区二区三区四区 | av中文字幕一区 | 污视频网站免费在线观看 | 久久草网站 | 亚洲精品一线二线三线 | 一级久久 | 国产麻豆a毛片 | 国产精品美女在线观看 | 成人短视频在线播放 | a级黄色录像 | 亚洲精品视频在线观看视频 | 日日爱夜夜爱 | 91高清在线| 夜夜天堂| 国产黄色小说 | 欧美孕交视频 |