py2exe odbc:cannot import dbi module

Thomas Heller theller at
Wed Mar 3 09:08:51 CET 2004

Thomas Heller <theller at> writes:

> mederis at (Marc Ederis) writes:
>> Hello,
>> I'm trying to create an executable with py2exe, and it uses the odbc
>> module. The script runs fine until I use py2exe on it and run the
>> .exe. Then I get:
>> --
>> Traceback (most recent call last):
>>   File "", line 2, in ?
>>   File "odbc.pyo", line 9, in ?
>>   File "odbc.pyo", line 7, in __load
>> odbc: Cannot import dbi module
>> --
>> dbi.dll is in the dist folder, and so is odbc.pyd.
>> Does anyone know how to solve this problem?
> It seems you have to first explicitely import the dbi module before the
> odbc module can be imported.
> """
> import dbi, odbc
> """
> py2exe doesn't know that dbi.dll is a python extension - it is only
> found as binary dependency.

You can avoid the need for 'import dbi' by patching the builtin
hidden_imports dictionary, in the get_hidden_imports() method in
py2exe\, near line 650. Add
   "odbc": ["dbi"]
and it should work.

>  And you should not (must not?) distribute
> odbc32.dll, which is also copied to the dist folder.
> In py2exe 0.5, you *should* be able to specify
>    dll_exludes = ["odbc32.dll"]
> but this doesn't seem to work.

I got this wrong - it does work, but you have to pass an options dict to
the setup script, something like this:

      options = {"py2exe":
                  {"dll_excludes": ["odbc32.dll"]}}


More information about the Python-list mailing list