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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

手动制作python的exe可执行程序

發布時間:2025/3/15 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手动制作python的exe可执行程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
手動制作python的exe可執行程序 -- by Leo Jay

Python沒有內建一個編譯為exe的功能。給python程序的部署帶來不少的麻煩。 ??

所以就會出現一些py2exe之類的很不錯的工具,用于自動把.py文件編譯為.exe文件。 ??

最近抽空研究了一下手動實現類似py2exe的功能,希望加強對python的了解。 ??

結果還相當不錯。把結果記錄下來,與大家共享。 ??

?

原理

?

文中所描述的方法,基于python的以下幾個功能 ??

1. python程序運行時,會在sys.path指定的路徑中查找庫文件。 ??

2. python從2.3開始,支持從zip文件中import庫(支持.py,.pyc和.pyo,但不支持.pyd) ??

3. python提供C API,讓c語言的程序,可以很方便的調用python的程序 ??

?

實際步驟

?

注:假設python安裝在c:\python25目錄中,最后的可執行文件放到d:\dist目錄中 ??

1. 先去c:\python25\Lib目錄,把所有文件都復制出來,比如復制到d:\pythonlib目錄中 ??

2. 開一個cmd窗口,進入d:\pythonlib目錄中,運行 python?-OO?compileall.py?-f?. 把lib中的.py文件都編譯成.pyo文件 ??

3. 刪除d:\pythonlib目錄中所有的.py和.pyc文件,因為我們只要有.pyo文件就可以讓這些庫運行了。

4. 刪除目錄中所有用不著的文件,比如curses,test,idlelib,msilib等,以減少生成文件的體積。

5. 把這些庫打包成一個zip文件,比如stdlib.zip,放到d:\dist目錄中

6. 把c:\python25\dlls目錄中的.pyd和.dll文件,復制到d:\dist\dlls目錄中,當然,刪除不可能用到的一些文件_msi.pyd,_ssl.pyd等等,可以減少文件的體積

7. 把自己寫的程序,也按步驟2至步驟5所說的方法,打成一個mysrc.zip包,放到d:\dist目錄中。 注意:自己寫的程序的入口應該是main.pyo文件

8. 用以下C程序編譯出一個可執行文件,比方說叫runpy.exe,也放到d:\dist中。

?

#include <Python.h> #include <Windows.h> #include <stdlib.h> #include <stdio.h>int main() {// 得到當前可執行文件所在的目錄 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;// 設定運行時的PATH sprintf(szCmd, "PATH=%s\\dlls;%%PATH%%", szPath);_putenv(szCmd);// 把sys.path設定為['.', '自己的源代碼zip文件', '標準庫zip文件', 'dll目錄']// 然后調用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目錄中。 ??

結束語

?

這樣來,d:\dist目錄中,一共只有4個文件加一個目錄: ??

  • dlls目錄:用于存放所有的dll文件和pyd文件 ?

    ?

  • stdlib.zip文件:用于存放所有的python的.pyo文件格式的標準庫

    ?

  • mysrc.zip文件:用于存放自己寫的程序。注意,自己寫的程序的入口在main.pyo中。

    ?

  • runpy.exe文件:程序的啟動文件,啟動后會設定python的sys.path,然后調用main模塊

    ?

  • python25.dll文件:python的核心dll,runpy.exe依賴于這個dll

    ?


  • 哈哈,相當的簡潔明了吧。一共才4個文件一個目錄,5MB都不到哦。

注:當然,這種打包方式第一次做的時候比較麻煩,但之后就可以只要把自己的程序打包就好了,其它的不用變。

而且,如果自己的程序經常做改動的話,自己的程序也可以不打包,直接放到d:\dist中,反正runpy.exe啟動程序的時候,只要能正常運行import main就可以了。


有不少人寫email給我,問我要我做的包。大家可以在這里下載基于2.5.2版本的包: python_dist.7z 以及基于3.1.2版本的包: python31-dist.7z

注:3.1.2依賴于visual c++ 2008 redistributable package. 如果在目標機器上沒有安裝,則程序運行不起來。

解開包后,只要用自己的程序替換mysrc.zip就可以使用了。

包里有runpy.exe和runpyw.exe兩個文件。其中,runpy.exe是控制臺程序,runpyw.exe是非控制臺程序。這兩個程序分別類似于python.exe和pythonw.exe。想讓程序運行時出現一個控制臺,就運行runpy.exe,如果不想出現黑黑的控制臺,就運行runpyw.exe。

總結

以上是生活随笔為你收集整理的手动制作python的exe可执行程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 尤物视频在线观看国产 | 国产精品178页| 亚洲色图 一区二区 | 亚洲熟女乱色综合亚洲小说 | 天天草av| 国产欧美一区二区三区在线 | 三级亚洲欧美 | 97久久综合 | 精品国产一区二区三区在线观看 | 亚洲一区二区三区网站 | 日韩免费片 | 大陆日韩欧美 | 一区二区三区日韩欧美 | 中文无码精品一区二区三区 | 少妇高潮一区二区三区69 | 69精品视频 | 日韩avwww| 成人在线观看av | aaa在线 | 日韩欧美偷拍 | 国产精品ⅴa有声小说 | 黑丝美女啪啪 | 99久久久无码国产精品性波多 | 捆绑少妇玩各种sm调教 | av不卡免费在线 | 久久999| 亚洲免费中文字幕 | 日韩美女视频在线 | 国产麻豆精品在线观看 | 欧美理伦片在线播放 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 秋霞成人午夜鲁丝一区二区三区 | 色福利视频 | 色涩综合 | 94av | 在线看黄的网站 | 亚欧美在线| 亚洲一区网 | 在线观看xxxx | 久久久久国产精品午夜一区 | 黄色大片在线看 | 国产精品婷婷 | 红桃视频成人 | 性色av一区二区三区红粉影视 | 影音先锋三级 | 黄瓜视频在线免费看 | 四虎影视成人 | 在线亚洲欧美 | 萌白酱喷水视频 | 男男全肉变态重口高h | 国产乱叫456在线 | 九九热精品在线视频 | 宅男噜噜噜66一区二区 | 色播av | 在线免费中文字幕 | 日韩在线观看视频一区 | 亚洲美女综合网 | 日韩精品一区二区在线播放 | 欧美日韩一级片在线观看 | 男人的天堂视频网站 | 国产精品无码一区二区无人区多人 | 亚洲国产在| 91久久精品一区二区别 | 精品91在线 | 性欧美1819性猛交 | 探花一区| 4444亚洲人成无码网在线观看 | 天天综合av | 免费做a爰片77777 | 成年视频在线观看 | av网子| 午夜影院在线观看免费 | 国产一级片视频 | 国产一级二级在线观看 | 激情久久久久久久 | 一路向西在线看 | 亚洲成人网页 | 超碰在线日韩 | 深爱激情av | 日韩极品在线观看 | 一卡二卡三卡在线视频 | 天天射日日干 | 久久av喷吹av高潮av萌白 | 精品国产丝袜一区二区三区乱码 | 蜜臀av粉嫩av懂色av | 亚洲激情国产 | 亚洲精品亚洲人成人网 | 麻豆国产尤物av尤物在线观看 | 黑人与亚洲人色ⅹvideos | 欧美视频性 | 四虎影视免费永久大全 | 91麻豆精品秘密入口 | 无码人妻精品一区二 | 久草免费在线色站 | 婷婷激情小说网 | 国家队动漫免费观看在线观看晨光 | 日韩精品在线视频观看 | 91在线看 | 欧美一级无毛 |