Я знаю, что здесь было что-то похожее, но, несмотря на следующие советы из предыдущих тем, у меня все еще остается та же проблема
Я запускаю этот код в своем 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
Есть идеи?