py2exe、sqlalchemy 和 cx_oracle:导入错误:没有名为 oracle 的模块
我正在尝试使用 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
另外,这是我用于的 setup.py py2exe:
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 可能意味着什么吗? 提前致谢。
I'm trying to create a binary with py2exe, here are last lines of py2exe output:
*** 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
My original python script runs just fine, but when I execute resulting binary I get the following:
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
Also, here is my setup.py which I use for py2exe:
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'}]
)
Any ideas what that ImportError could mean?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可能需要显式指定 py2exe 以使用
packages
选项导入包。一个很好的检查方法是查看构建目录,并查看 oracle 模块实际上在那里。You may need to specify explicitly to py2exe to import the package with the
packages
option. A good way to check is to look in the build directory, and see of the oracle module is actually there.只需在主模块顶部添加 import sqlalchemy.dialects.oracle 即可。
Just add import sqlalchemy.dialects.oracle at the top of youre main module.