您好,登錄后才能下訂單哦!
Pythonexe的實(shí)際操作步驟是怎樣的,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
Python6. 把c:\python25\dlls目錄中的.pyd和.dll文件,復(fù)制到d:\dist\dlls目錄沒有內(nèi)建一個編譯為exe的功能。給python程序的部署帶來不少的麻煩。 所以就會出現(xiàn)一些py2exe之類的很不錯的工具,用于自動把.py文件編譯為.exe文件。 最近抽空研究了一下動實(shí)現(xiàn)類似py2exe的功能,希望加強(qiáng)對python的了解。 結(jié)果還相當(dāng)不錯。把結(jié)果記錄下來,與大家共享。
原理
文中所描述的方法,基于python的以下幾個功能
1. python程序運(yùn)行時,會在sys.path指定的路徑中查找?guī)煳募?
2. python從2.3開始,支持從zip文件中import庫(支持.py,.pyc和.pyo,但不支持.pyd)
3. python提供C API,讓c語言的程序,可以很方便的調(diào)用python的程序
實(shí)際步驟
注:假設(shè)Pythonexe安裝在c:\python25目錄中,***的可執(zhí)行文件放到d:\dist目錄中
1. 先去c:\python25\Lib目錄,把所有文件都復(fù)制出來,比如復(fù)制到d:\pythonlib目錄中
2. 開一個cmd窗口,進(jìn)入d:\pythonlib目錄中,運(yùn)行 python -OO compileall.py -f . 把lib中的.py文件都編譯成.pyo文件
3. 刪除d:\pythonlib目錄中所有的.py和.pyc文件,因為我們只要有.pyo文件就可以讓這些庫運(yùn)行了。
4. 刪除目錄中所有用不著的文件,比如curses,test,idlelib,msilib等,以減少生成文件的體積。
5. 把這些庫打包成一個zip文件,比如stdlib.zip,放到d:\dist目錄中
中,當(dāng)然,刪除不可能用到的一些文件_msi.pyd,_ssl.pyd等等,可以減少文件的體積
7. 把自己寫的程序,也按步驟2至步驟5所說的方法,打成一個mysrc.zip包,放到d:\dist目錄中。 注意:自己寫的程序的入口應(yīng)該是main.pyo文件
8. 用以下C程序編譯出一個可執(zhí)行文件,比方說叫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)行時的PATH
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;
把sys.path設(shè)定為['.', '自己的源代碼zip文件', '標(biāo)準(zhǔn)庫zip文件', 'dll目錄']
然后調(diào)用main模塊
把python25.dll放到d:\dist目錄中即可完成手動制作pythonexe可執(zhí)行程序的部分程序 。
看完上述內(nèi)容,你們掌握Pythonexe的實(shí)際操作步驟是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。