【问题标题】:auto-py-to-exe .py file works but .exe pops a bunch of errorsauto-py-to-exe .py 文件有效,但 .exe 弹出一堆错误
【发布时间】:2021-11-04 09:06:18
【问题描述】:

我有一个想要转换为 exe 的 Python 脚本。转换实际上给了我一个.exe文件,但是当我运行它时,会弹出这个错误:

Traceback (most recent call last):
  File "TicketingIngenieria.py", line 10, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
  File "ibm_db", line 7, in <module>
  File "os.py", line 1111, in add_dll_directory
FileNotFoundError: [WinError 3] System cannot find the specified route: 'C:\\Users\\sromero\\AppData\\Local\\Temp\\_MEI50802\\clidriver\\bin'
[18820] Failed to execute script 'TicketingIngenieria' due to unhandled exception!

当我将文件从 .py 转换为 .exe 时,我在 CMD 中收到了这条消息:

c:\py_project\ticketingingenieriavenv\lib\site-packages\setuptools\distutils_patch.py:25: UserWarning: Distutils was imported before Setuptools. This usage is discouraged and may exhibit undesirable behaviors or errors. Please use Setuptools' objects directly or at least import Setuptools first.
  warnings.warn(

我不知道该怎么做,我猜是模块相关的,但是用 Python 执行脚本确实有效,一旦我将它作为可执行文件执行,它只会给我这些错误。这是模块列表:

from tkinter import *
import datetime
from datetime import datetime
from tkinter import ttk
from tkinter import messagebox
from PIL import Image, ImageTk
from pprint import pprint
import pyodbc
import ibm_db
import os

这是我使用的命令:

pyinstaller --noconfirm --onefile --windowed --add-data "G:/09 SCRIPTS AUTOMATIZACION/tst/FLOS.ico;."  "G:/09 SCRIPTS AUTOMATIZACION/tst/TicketingIngenieria.py"

编辑: 在 pyinstaller 命令中包含 clidriver 目录:

pyinstaller --noconfirm --onefile --windowed --add-data "G:/09 SCRIPTS AUTOMATIZACION/tst/FLOS.ico;." --add-data "C:/py_project/TicketingIngenieriaVENV/Lib/site-packages/clidriver;clidriver/"  "G:/09 SCRIPTS AUTOMATIZACION/tst/TicketingIngenieria.py"

这给出了以下错误:

ImportError: DLL load failed while importing ibm_db: Could not find the specified module

编辑: 尝试添加:--add-data "C:/py_project/TicketingIngenieriaVENV/Lib/site-packages/clidriver/bin/amd64.VC12.CRT;./clidriver/"

错误:

FileNotFoundError: [WinError 2] System cannot find the specified file: 'C:\\Users\\sromero\\AppData\\Local\\Temp\\_MEI189962\\clidriver\\bin'

系统版本:

  • Python 版本:3.9.4
  • 自动 py 到 exe:2.9.0
  • 操作系统:Windows 10 Pro 21H1(SO 编译 19043.1165)

【问题讨论】:

  • 更新了我使用的命令!但是第二句我没看懂,除了ODBC我什么都没配置,你是这个意思吗?
  • 如果您打算在不同的主机名上运行可执行文件,则需要另外包含 clidriver 目录,并带有 --add-data 。在此处查看相关答案stackoverflow.com/questions/63061992/…
  • 我试过了,这是命令:pyinstaller --noconfirm --onefile --windowed --add-data "G:/09 SCRIPTS AUTOMATIZACION/tst/FLOS.ico;." --add-data "C:/py_project/TicketingIngenieriaVENV/Lib/site-packages/clidriver;clidriver/" "G:/09 SCRIPTS AUTOMATIZACION/tst/TicketingIngenieria.py",这是新的错误:ImportError: DLL load failed while importing ibm_db: Could not find the specified module
  • 请编辑您的问题以详细说明 Microsoft Windows 版本、版本和构建(来自 winver 命令),也请尝试 pyinstaller 的附加参数:--add-data "C:/py_project/TicketingIngenieriaVENV/Lib/site-packages/clidriver/bin/x86.VC12.CRT;./clidriver/"
  • 问题已更新结果。

标签: python python-3.x tkinter error-handling db2


【解决方案1】:

最后我得到了解决方案,我不得不直接将 ibm_db.dll 添加到脚本中。这是对我有用的命令:

pyinstaller --noconfirm --onedir --console --add-data "G:/09 SCRIPTS AUTOMATIZACION/tst/FLOS.ico;." --add-binary "C:/py_project/TicketingIngenieriaVENV/Lib/site-packages/ibm_db_dlls/ibm_db.dll;ibm_db_dlls/" --add-data "C:/py_project/TicketingIngenieriaVENV/Lib/site-packages/clidriver;clidriver/" --paths "C:/py_project/TicketingIngenieriaVENV/Lib/site-packages/clidriver/bin/amd64.VC12.CRT"  "C:/py_project/TicketingIngenieriaVENV/TicketingIngenieria.py"

【讨论】:

    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多