Python文件夾創(chuàng)建九步輕松搞定
Python文件夾創(chuàng)建在有些時候是必須要使用的。在整理文件上十分有必要。下面我們就看看如何才能更好的使用這個技術。Python文件夾創(chuàng)建沒有內建一個編譯為exe的功能。給python程序的部署帶來不少的麻煩。
所以就會出現(xiàn)一些py2exe之類的很不錯的工具,用于自動把.py文件編譯為.exe 文件。最近抽空研究了一下手動實現(xiàn)類似py2exe的功能,希望加強對python的了解。
Python文件夾創(chuàng)建結果還相當不錯。把結果記錄下來,與大家共享。
一、 原理
文中所描述的方法,基于python的以下幾個功能
1. python程序運行時,會在sys.path指定的路徑中查找?guī)煳募?/p>
2. python從2.3開始,支持從zip文件中import庫(支持.py,.pyc和.pyo,但不支持.pyd)
3. python提供C API,讓c語言的程序,可以很方便的調用python的程序
二、實際步驟
注:假設python安裝在c:\python25目錄中,最后的可執(zhí) 行文件放到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程序編譯出一個可執(zhí)行文件,比方說叫runpy.exe,也放到d:\dist中。
- #include <Python.h>#include <Windows.h>int main(){ //
得到當前可執(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; // 把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_Initialize(); PyRun_SimpleString(szCmd); return 0;}
9. 把python25.dll放到d:\dist目錄中。
三、結束語
這樣來,d:\dist目錄中,一共只有4個文件加一個目錄:#t#
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就可以了。以上就是對Python文件夾創(chuàng)建的相關介紹。