Podbc + Pyinstaller выпускают pyodbc.InterfaceError IM002 - PullRequest
1 голос
/ 02 мая 2019

Я знаю, что здесь было что-то похожее, но, несмотря на следующие советы из предыдущих тем, у меня все еще остается та же проблема Я запускаю этот код в своем Pycharm, и он хорошо работает.

import pyodbc
import pandas
import os
import sys

try:
    currdir = os.path.abspath(__file__)
except NameError:  
     import sys
currdir = os.path.abspath(os.path.dirname(sys.argv[0]))
DBfile = os.path.join(currdir, 'UNION.accdb')
cnxn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;' %DBfile)
sql = "Select * FROM topivot"
df = pandas.read_sql(sql,cnxn)

print(df)

Затем я запускаю команду pyinstaller --onefile pydbb.py, и она выдает ошибку RuntimeError: maximum recursion depth exceeded while calling a Python object. Поэтому я создаю файл .spec с помощью pyi-Makespec --onefile pydbb.py, а затем запускаю pyinstaller --onefile pyddb.spec.

Файл .spec выглядит следующим образом

# -*- mode: python ; coding: utf-8 -*-
import sys
sys.setrecursionlimit(5000)

block_cipher = None 


a = Analysis(['pyddb2.py'],
         pathex= 
['C:\\Users\\xxxxxx\\AppData\\Local\\Programs\\Python\\Python37-32'],
         binaries=[],
         datas=[],
         hiddenimports=[],
         hookspath=[],
         runtime_hooks=[],
         excludes=[],
         win_no_prefer_redirects=False,
         win_private_assemblies=False,
         cipher=block_cipher,
         noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
         cipher=block_cipher)
exe = EXE(pyz,
      a.scripts,
      a.binaries,
      a.zipfiles,
      a.datas,
      [],
      name='pyddb2',
      debug=False,
      bootloader_ignore_signals=False,
      strip=False,
      upx=True,
      runtime_tmpdir=None,
      console=True )

Это успешно создает файл (365 МБ! По некоторым причинам), но выдает ошибку:

Traceback (most recent call last): File "pyddb2.py", line 12, in <module> 
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] 
Data source name not found and no default driver specified (0) 
(SQLDriverConnect)') [10948] Failed to execute script pyddb2 

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...