我正在開發一個基於Python的小工具,它基本上在文件夾上啓動一組腳本。我需要將它打包在一個獨立的二進制文件中,我使用py2exe。如何捆綁在py2exe上使用execfile()啓動的.py文件?
我的當前代碼使用os.path.listdir()
獲取文件夾中的所有.py文件,然後使用execfile()
函數根據用戶在PyQT界面上的輸入啓動其中的一些文件。
如果通過主Python文件執行,我的代碼將按預期工作,但在使用py2exe編譯時失敗。例外情況是:
IOError: [Errno 2] No such file or directory
對於使用execfile()
啓動的python文件。
我目前與"bundle_files": 1
和zipfile = None
捆綁在一起。我試圖將這些文件與includes和packages混淆,但沒有運氣。你能幫我正確配置py2exe嗎?
這是我目前setup.py
:
from distutils.core import setup
import py2exe
import os
#Python modules excluded from binary file
mod_excludes = [
"Tkinter",
"doctest",
"unittest",
"pydoc",
"pygments",
"pdb",
"email",
"_ssl",
"difflib",
"inspect"
]
#Avoid adding this dependencies
dll_excludes = [
"MSVCP90.dll",
"w9xpopen.exe"
]
#Force to exe
mod_includes = [
"sip"
]
package_includes = [
"app.payloads"
]
py2exe_options = {
"optimize": 2, # 0 (None), 1 (-O), 2 (-OO)
"includes": mod_includes,
"excludes": mod_excludes,
"dll_excludes": dll_excludes,
"packages": package_includes,
#"xref": False,
"bundle_files": 1,
"compressed": True
#"dist_dir": dist_dir
}
#TODO generar automaticamente la interfaz
setup(
windows=[{"script": "app.py",
"icon_resources": [(1, "app/gui/Res/app.ico")],
"uac_info": "requireAdministrator"}],
data_files=exe_files,
options={"py2exe": py2exe_options},
zipfile=None
)
而且我得到以下回溯:如果您使用"optimize"
大於0爲
Traceback (most recent call last):
File "app\gui\ui.pyo", line 22, in call_report
File "app\core\core.pyo", line 32, in generate_report
File "app\core\core.pyo", line 18, in launch_payload
IOError: [Errno 2] No such file or directory: 'C:\\Users\\my_user\\path\\to\\app\\dist\\app.exe\\app\\payloads\\autoruns.py'
你可以添加你的'setup.py'代碼和當你試圖通過python/py2exe運行這個問題的輸出嗎? – 2013-05-10 14:27:15
謝謝Bas!我已經添加了setup.py和追蹤。 – lithiium 2013-05-10 14:37:48