Pythonexe實(shí)際應(yīng)用的八大步驟
Pythonexe在實(shí)際運(yùn)用的過程中,很多人會(huì)對其實(shí)際操作步驟會(huì)存在不解之處,以下的文章就是對 Pythonexe的步驟做一詳細(xì)的介紹,以下是文章的詳細(xì)內(nèi)容,希望對其感興趣的朋友會(huì)有所收獲。
實(shí)際步驟
注:假設(shè)python安裝在c:\python25目錄中,***的可執(zhí)行文件放到d:\dist目錄中
1. 先去c:\python25\Lib目錄,把所有文件都復(fù)制出來,比如復(fù)制到d:\pythonlib目錄中
2. 開一個(gè)cmd窗口,進(jìn)入d:\pythonlib目錄中,運(yùn)行 python -OO compileall.py -f . 把lib中的.py文件都編譯成.pyo文件。#t#
3. 刪除d:\pythonlib目錄中所有的.py和.pyc文件,因?yàn)槲覀冎灰?pyo文件就可以讓這些庫運(yùn)行了。
4. 刪除目錄中所有用不著的文件,比如curses,test,idlelib,msilib等,以減少生成文件的體積。
5. 把這些庫打包成一個(gè)zip文件,比如stdlib.zip,放到d:\dist目錄中
6. 把c:\python25\dlls目錄中的.pyd和.dll文件,復(fù)制到d:\dist\dlls目錄中,當(dāng)然,刪除不可能用到的一些文件_msi.pyd,_ssl.pyd等等,可以減少文件的體積
7. 把自己寫的程序,也按步驟2至步驟5所說的方法,打成一個(gè)mysrc.zip包,放到d:\dist目錄中。 注意:自己寫的程序的入口應(yīng)該是main.pyo文件
8. 用以下C程序編譯出一個(gè)可執(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)行時(shí)的PATH
- sprintf(szCmd, "PATH=%s\\dlls;%%PATH%%", szPath);
- _putenv(szCmd);
把sys.path設(shè)定為['.', '自己的源代碼zip文件', '標(biāo)準(zhǔn)庫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;
- }
以上是對手動(dòng)Pythonexe可執(zhí)行程序的實(shí)際步驟的介紹。