py2exe, sqlalchemy и cx_oracle: ImportError: нет модуля с именем 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? Заранее спасибо.


person Nikolay Derkach    schedule 20.10.2010    source источник


Ответы (2)


Возможно, вам придется явно указать py2exe для импорта пакета с параметром packages. Хороший способ проверить это — заглянуть в каталог сборки и увидеть, что модуль оракула действительно там.

options = dict(optimize=2,
           bundle_files=2,
           compressed=True,
           packages=["oracle"],
           dll_excludes=['oci.dll'])

setup_dict['options'] = {"py2exe":options}
person Ryan Ginstrom    schedule 23.10.2010

Просто добавьте import sqlalchemy.dialects.oracle вверху основного модуля.

person tuck    schedule 22.03.2013