本文轉載自http://www.open-open.com/lib/view/open1342675735745.html
把用Python寫好的腳本,可以用pyinstaller打包成.exe文件,方便發布,在其他電腦上脫離python語言環境而運行。
1、要求:
1、要求:
python3.5及以下版本,暫時不支持3.6版本。
我電腦python是3.5版本
我電腦安裝的pyinstaller是3.2.1
2、打包 (以NIPT_analysis.py 為例)
a、去除代碼中所有中文字符,包括注釋。(指定編碼的注釋可以不去掉沒有關系)
b、 如果用到非官方的庫,可能pyinstaller找不到該庫,因此需要根據情況修改。
b、 如果用到非官方的庫,可能pyinstaller找不到該庫,因此需要根據情況修改。
命令行:

注意:
(1)所有.py文件都不能有中文字符,否則會出現編碼異常。
(2)執行上述命令后,在會生成dist目錄,里面就有打包后的可執行文件。
(3)啟動執行的文件中不要有下面這種判斷,否則可執行文件執行會沒有任何效果。(來源網絡)
if __name__ == "__main__":
main()
(3)啟動執行的文件中不要有下面這種判斷,否則可執行文件執行會沒有任何效果。(來源網絡)
if __name__ == "__main__":
main()
(4)文件內容不能有中文,即使是注釋中也不能有,否則出現如下錯誤。 (原自網絡)
codeString = fp.read()
File "C:\Python31\lib\codecs.py", line 300, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 557-558: invalid
data
嘗試把編碼由cp936改為utf-8,也不可以,把文件中ASCII另存為UTF-8,也不行,有如下錯誤:
File "BlogConfig.py", line 1
\ufeff#!/usr/bin/python
^
SyntaxError: invalid character in identifier
(5)有些三方模塊,比如我的statsmodels 在pyinstaller中找不着,需要做如下修改:
codeString = fp.read()
File "C:\Python31\lib\codecs.py", line 300, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 557-558: invalid
data
嘗試把編碼由cp936改為utf-8,也不可以,把文件中ASCII另存為UTF-8,也不行,有如下錯誤:
File "BlogConfig.py", line 1
\ufeff#!/usr/bin/python
^
SyntaxError: invalid character in identifier
(5)有些三方模塊,比如我的statsmodels 在pyinstaller中找不着,需要做如下修改:

最后終於成功!!!
在dist目錄生成單一的NIPT_Analysis.exe文件,這個文件是可執行的。