跟所有python小白一樣,我也遇到了python打包發布的問題!
先用了py2exe,由於專案裡面需要訪問oracle資料庫,匯入cx_oracle模組,就是這個蛋疼的東西坑咯!
安裝cx_oracle的過程就不多說了 這個帖子講得很清楚:
oracle instant client 設定環境變數是讓python可以取到oci.dll,所以很多人把oci.dll, oraocci11.dll,oraociei11.dll都放到了python27\lib\site-packages目錄下面,也能解決問題;
用py2exe打包後 dist裡面有乙個msvcp80.dll的檔案,系統版本不一樣名稱不一樣,有可能是msvcp90.dll、msvcp71.dll
這樣打包就完成了, 問題也來了, 用64位的python,其它模組都是64位的,打包出來的64位程式在64位系統上執行沒有問題, 用32位的python(其它也是32位)打包出來的程式在windows server 2003伺服器系統上,始終不能正常執行,經除錯是匯入cx_oracle模組出錯,「 loaded failed ,找不到指定的模組」複製各種dll進去都沒解決到;最後放棄py2exe
改用pyinstall
2、安裝
3、pyinstaller使用方法
使用也非常的簡單,cmd下進入解壓出來的目錄,執行如下命令。
python pyinstaller.py [opts]yourprogram.py
主要選項包括:
-f, –onefile 打包成乙個exe檔案。 -d, –onedir 建立乙個目錄,包含exe檔案,但會依賴很多檔案(預設選項)。 -c, –console, –nowindowed 使用控制台,無介面(預設) -w, –windowed, –noconsole 使用視窗,無控制台
使用pyinstall的問題:
打包時出現類似這種情況:
file "c:\python27\lib\ctypes\util.py", line 54, in find_library
fname = os.path.join(directory, name)
file "c:\python27\lib\ntpath.py", line 108, in join
path += "\\" + b
unicodedecodeerror: 'ascii' codec can't decode byte 0xc1 in position 9: ordinal not in range(128)
【原因】
安裝過程需要訪問使用者資料夾:
如果使用者名稱是中文,不識別。
【解決辦法】
修改ntpath.py,將import sys改為:
import sys
reload(sys)
sys.setdefaultencoding("gbk")
問題2:manifest could not be extracted
【現象】
程式執行時出現這個錯誤:
manifest could not be extracted
【原因】
不明。【解決辦法】
開始用python pyinstaller.py -f test.py
打包成乙個單一的檔案,
換成python pyinstaller.py -d test.py
生成乙個目錄 ,這樣會把所有需要的dll都放在目錄下面;解決問題;
通過python pyinstaller.py -d test.py 完美解決windows server 2003 無法匯入cx_oracle模組的問題;
j2me程式發布到手機
a.配置程式 jad 檔案 required microeidtion configuration 要和手機支援相符合,現在大部分都是1.1版 midlets name 遊戲名稱,icon 遊戲圖表,class 遊戲主入口 就 是midlet所在的類 配置上面兩點後儲存 b.發布程式 右擊應用,選擇...
Python打包多個 py檔案為 exe
檔案結構 test getxxketang.py downloadfile.py data.py tt.db accd.xml reason.csv 多個.py檔案和多個打包命令格式如下 pyinstaller 主檔案 p 其他檔案1 p 其他檔案2 hidden import 自建模組1 hidd...
python指令碼打包發布 pyinstaller
windows發行版 win7 64位 python發行版 anaconda pip install pyinstaller測試是否成功安裝 pyinstaller version3.2 pyinstaller helloworld.pyor pyinstaller onefile hellowor...