我正在尝试使用 py2exe 创建一个二进制文件,这里是 py2exe 输出的最后几行:
*** copy dlls ***
copying C:\Apps\Python27\python27.dll -> C:\Documents and Settings\nikolay.derka
ch\Desktop\UMTScellsChecking\UMTScellsChecking\dist
setting sys.winver for 'C:\Documents and Settings\nikolay.derkach\Desktop\UMTSce
llsChecking\UMTScellsChecking\dist\python27.dll' to 'py2exe'
copying C:\Apps\Python27\w9xpopen.exe -> C:\Documents and Settings\nikolay.derka
ch\Desktop\UMTScellsChecking\UMTScellsChecking\dist
copying C:\Apps\Python27\lib\site-packages\py2exe\run.exe -> C:\Documents and Se
ttings\nikolay.derkach\Desktop\UMTScellsChecking\UMTScellsChecking\dist\UMTSCell
Test.exe
The following modules appear to be missing
['_scproxy', 'sqlalchemy.cprocessors', 'sqlalchemy.cresultproxy', 'win32api', 'w
in32con', 'win32pipe']
*** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.
Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.
USER32.dll - C:\WINDOWS\system32\USER32.dll
SHELL32.dll - C:\WINDOWS\system32\SHELL32.dll
WSOCK32.dll - C:\WINDOWS\system32\WSOCK32.dll
ADVAPI32.dll - C:\WINDOWS\system32\ADVAPI32.dll
WS2_32.dll - C:\WINDOWS\system32\WS2_32.dll
KERNEL32.dll - C:\WINDOWS\system32\KERNEL32.dll
我原来的 python 脚本运行得很好,但是当我执行生成的二进制文件时,我得到以下信息:
C:\Documents and Settings\nikolay.derkach\Desktop\UMTScellsChecking\UMTScellsChe
cking\dist>UMTSCellTest.exe
Traceback (most recent call last):
File "UMTSCellTest.py", line 53, in <module>
File "sqlalchemy\engine\__init__.pyc", line 244, in create_engine
File "sqlalchemy\engine\strategies.pyc", line 46, in create
File "sqlalchemy\engine\url.pyc", line 99, in get_dialect
ImportError: No module named oracle
此外,这是我用于 py2exe 的 setup.py:
from distutils.core import setup
import py2exe, sys
sys.argv.append('py2exe')
setup(
options = {"py2exe": {
'bundle_files': 2,
'compressed': True,
'dll_excludes': ['oci.dll']}},
console=[{'script': 'UMTSCellTest.py'}]
)
知道 ImportError 是什么意思吗? 提前致谢。
请您参考如下方法:
您可能需要明确指定 py2exe 以使用 packages 选项导入包。检查构建目录的一个好方法是查看 oracle 模块是否确实存在。
options = dict(optimize=2,
bundle_files=2,
compressed=True,
packages=["oracle"],
dll_excludes=['oci.dll'])
setup_dict['options'] = {"py2exe":options}
