若是在setup.py打包程序中使用簡單代碼:html
# setup.py from distutils.core import setup import py2exe setup(windows=["test.py"])
在dist文件夾中運行test.exe文件會出現以下錯誤:python
Traceback (most recent call last):
File "test.py", line 2, in
import pymssql
File "pymssql.pyc", line 30, in
File "_mssql.pyc", line 12, in
File "_mssql.pyc", line 10, in __load
ImportError: No module named decimalc++
能夠把setup.py文件修改爲以下:redis
# setup.py from distutils.core import setup import py2exe,os,pyodbc py2exe_options = { "includes": "decimal, datetime" } } setup(windows=["test.py"],options={"py2exe": py2exe_options})
再到cmd的窗口使用python setup.py py2exe命令,通常可正常運行。在網上能夠找到關於圖形界面的打包腳本,例如:sql
包含圖形界面(pyqt)的程序打包:windows
#setup.py # -*- coding: utf-8-*- from distutils.core import setup import py2exe,sys,os includes = ["encodings", "encodings.*"] origIsSystemDLL = py2exe.build_exe.isSystemDLL def isSystemDLL(pathname): if os.path.basename(pathname).lower() in ("QtSvg4.dll"): return 0 return origIsSystemDLL(pathname) py2exe.build_exe.isSystemDLL = isSystemDLL setup(windows=[{'script':'RunManager.py','icon_resources':[(1,"icon.ico")]}], options={'py2exe': {'includes':['sip','PyQt4._qt','PyQt4.QtCore','PyQt4.QtSvg','PyQwt'], "optimize": 0, "includes": includes #,"bundle_files": 1 }}, data_files=["icon.ico"])
操做步驟:app
一、Dos窗口進入本目錄
二、運行命令 python setup.py py2exe --includes PyQt4.QtSvg,sip
三、生成文件在dist目錄
四、須要手動拷貝到dist目錄的文件:images(目錄);app.init;打包相關文件中的PyQt四、qt.conf、QtSvg4.dll;ui
本身修改其中的一些語句,就能夠打包你想要的任何python腳本。spa
補充,有些PC機可能會出現找不到MSVCP90.DLL文件,用了圖形模塊的緣故吧。有以下幾種解決方法:code
由於包含wxpython模塊,需下載MSVCP90.DLL 並拷貝到Python26/DLLs 目錄下
1.直接下載安裝微軟vc++ 2008 分發包:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf
會安裝到:
C:/WINDOWS/WinSxS/x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30411.0_x-ww_71382c73目錄下
可能不一樣的系統會稍有不一樣,但C:/WINDOWS/WinSxS/x86_Microsoft.VC90...這個是一致的。
並且直接在windows裏搜索搜不到。
2.單獨下載MSVCP90.DLL 並拷貝到PythonXX/DLLs 目錄下
http://www.dll-files.com/dllindex/dll-files.shtml?msvcp90
3.因爲本機也能運行,確認不須要msvcp90.dll,能夠直接在腳本中去掉包含該dll。但可能在其餘人機器不能運行。
在py2exe的setup.py包含以下的代碼:
distutils.core.setup( options = { "py2exe": { "dll_excludes": ["MSVCP90.dll"] } }
或
from distutils.core import setup import py2exe setup(windows=['main.py'], options = { "py2exe": {"dll_excludes":["MSVCP90.dll"]}})
4.若是已經安裝msvc++ 2008以上,而找不到目錄,能夠以下設置,找到分發目錄。
import sys sys.path.append('c:/Program Files/Microsoft Visual Studio 9.0/VC/redist/x86/Microsoft.VC90.CRT')