使用PyInstaller將Python程式檔案轉換為可執行程式檔案,
Windows下採用PyInstall將py檔案轉換成exe可執行檔
好不容易寫完的py檔案,想做成exe檔案,最開始選擇用py2exe,結果產生的exe遇到兩個問題,
1. py程式裡print 的資訊,cmd中執行tool後並沒有顯示在螢幕上;
2. 調用dll介面,執行py檔案時是阻塞等待的,結果cmd中執行exe時,tool很快先返回了,介面還在運行,很詭異
一時找不到解決的辦法,無奈棄用了,在網上找了pyinstall,試了一下,感覺功能更強大些。。。
安裝PyInstaller之前需確認首先安裝了pywin32
:http://nchc.dl.sourceforge.net/project/pywin32/pywin32/Build%20218/pywin32-218.win32-py2.7.exe
一、PyInstaller安裝
1.:http://www.pyinstaller.org/wiki
2.最新版本:PyInstaller 2.0
3.直接“解壓縮”之後即可使用,解壓到您想讓他在的路徑即可
二、PyInstaller配置
1.事先寫好py程式
2.在命令列執行:
Python Makespec.py --console --onefile NotePad\notepad.py
報錯:
Configfile is missing or unreadable. Please run Configure.py before building
3.在命令列執行:
Configure.py
報錯:
Python 2.6+ on Windows support needs pywin32,Please install http://sourceforge.net/projects/pywin32/
4.安裝最新版本的 pywin32-217.win32-py2.7.exe,:http://sourceforge.net/projects/pywin32/files/pywin32/Build%20217/
三、PyInstaller使用
PyInstaller的使用相對簡單,cmd下進入解壓出來的目錄,執行如下命令:
python pyinstaller.py [opts] yourprogram.py
四、主要選項包括:
-F, -onefile 打包成一個exe檔案
-D, -onedir 建立一個目錄,包含exe檔案,但會依賴很多檔案(預設選項)
-c, -console, -nowindowed 使用控制台,無介面(預設)
-w, -windowed, -noconsole 使用視窗,不控制台
五、注意事項
在轉換之前要確保py程式可以正常通過;
如果轉換過程中出現什麼錯誤,用搜尋引擎搜尋解決一下。
Linux下安裝pyinstaller用於將py檔案打包產生一個可執行檔
一、安裝使用流程
1. 首先給系統裝個easy_install, 如果裝了的可以跳過這步
到pypi官方網址 https://pypi.python.org/pypi/setuptools 去download最新版本
2. 官網上下載pyinstaller,當前的最新版本是2.1
(1) 網址 http://www.pyinstaller.org/
3.解包進入源碼目錄
(1)
tar -zxvf pyinstaller_2.1.tar.gz
(2)
cd pyinstaller-2.1
運行
python setup.py install
4. 拷貝py檔案
將需打包的py檔案如test.py 拷貝到目前的目錄
5. 產生可執行檔
cd到pyinstaller目錄, 執行
python pyinstaller.py test.py
二、可能遇到的問題
1. 使用者權限
直接在root使用者下運行pyinstaller會報錯 “cannot run pyinstaller as user root"...
所以需新增另外一個使用者,並給使用者對pyinstaller所在的目錄及所有父目錄添加讀寫權限,避免運行後報‘mkdir' permission denied...
2. 找不到python lib動態庫
su切換到新增使用者後,
pyinstaller報錯找不到python動態庫
raise IOError("Python library not found!")IOError: Python library not
執行python --version查看目前的版本,並尋找/usr/local/lib 下有沒有對應版本的libpython*.*.so檔案,
如果有則跳過這步,如果沒有則需要重新安裝python,在python安裝配置中一定要加上--enable-shared參數就可以產生對應動態連結程式庫,如:
#./configure --enable-shared --prefix=/usr/local#make#make install
我環境中更新過python版本,導致/usr/lib下不是最新版本的庫檔案,需要將新版本拷貝到對應的/usr/lib目錄下,注意有兩個檔案:
#cp libpython*.so /usr/lib/#ln -s /usr/lib/libpython*.so.1.0 /usr/lib/libpython*.so