鱼C论坛

 找回密码
 立即注册
查看: 167|回复: 12

python生成的 exe文件包 点击保错

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
7鱼币
生成的 exe命令为
pyinstaller --onefile       --add-data "D:\软件\djangoProject\venv\lib\site-packages\pyautogui;pyautogui" --add-data "D:/软件/djangoProject/venv/lib/site-packages/pyperclip;pyperclip" --add-data "D:/软件/djangoProject/venv/lib/site-packages/pandas;pandas" --add-data "D:/软件/djangoProject/venv/lib/site-packages/xlwings;xlwings" --add-data "D:/软件/djangoProject/venv/lib/site-packages/openpyxl;openpyxl" --hidden-import pyperclip --hidden-import pandas --hidden-import xlwings --hidden-import openpyxl  "D:\软件\djangoProject\app\集中化脚本\exe文件创建.py"

对应代码里面的库是
import time
import pyautogui
import pyperclip
import pandas as pd
import xlwings as xw
from io import StringIO
import os


提示保错的内容 是
1735384474270.jpg

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
在执行生成的exe文件时出现报错,可能原因有很多,但常见的问题包括缺少库、路径问题或数据文件未正确打包。以下是一些排查建议:

1. **检查路径分隔符**:在`--add-data`参数中,确保路径的书写是正确的。比如,你使用的是Windows,因此应该使用`\\`双反斜杠或者使用`/`。例如:
--add-data "D:\\软件\\djangoProject\\venv\\lib\\site-packages\\pyautogui;pyautogui"

2. **检查库依赖**:再次确认你需要的库是否已正确导入并包含在`--add-data`或`--hidden-import`中。可以尝试使用`--hidden-import`添加更多可能被遗漏的模块。

3. **生成详细日志**:使用`--log-level=DEBUG`参数生成详细日志以便进一步分析错误原因。

4. **运行环境一致性**:确保生成exe文件的Python环境与开发和测试环境一致,尤其是库的版本。

5. **验证独立运行**:在命令行中手动执行你的Python脚本,确保其在不使用PyInstaller时可以正常运行。

6. **简化命令**:尝试简化PyInstaller命令,先生成一个没有`--add-data`和`--hidden-import`的基础exe文件,确保其能正常运行,然后逐步添加这些参数以定位具体问题。

如果上述建议无法解决问题,建议检查PyInstaller生成的spec文件,并根据提示信息定位具体的错误情况。将错误提示信息贴在论坛上可能会有助于更细致的分析。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
可以写的详细一些吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
tengke 发表于 2024-12-28 19:30
可以写的详细一些吗


好的,我们可以逐步排查这个问题,请按照以下步骤操作:

1. **验证Python脚本**:
   首先,在命令行中运行你的Python脚本,确保它在Python环境下能正常运行:
python "D:\软件\djangoProject\app\集中化脚本\exe文件创建.py"
   如果这里存在错误,需要先解决脚本本身的问题。

2. **检查路径分隔符**:
   - 确保在`--add-data`参数中使用正确的路径格式。对于Windows,建议使用双反斜杠:
--add-data "D:\\软件\\djangoProject\\venv\\lib\\site-packages\\pyautogui;pyautogui"
   - 确保路径中包含的目录确实存在。

3. **简化生成命令**:
   首先尝试不带`--add-data`和`--hidden-import`参数生成exe,查看是否能正常生成并运行:
pyinstaller --onefile "D:\软件\djangoProject\app\集中化脚本\exe文件创建.py"

4. **启用详细日志模式**:
   使用`--log-level=DEBUG`参数以便PyInstaller生成更详细的日志信息:
pyinstaller --onefile --log-level=DEBUG "D:\软件\djangoProject\app\集中化脚本\exe文件创建.py"

5. **逐步添加参数**:
   - 如果简化后的命令能够正常生成并运行exe文件,则逐步添加`--add-data`和`--hidden-import`参数,并每次测试生成的exe文件,直到找到导致问题的参数。
   - 注意参数顺序和语法格式。

6. **隐藏导入的处理**:
   - 有时候,模块会间接导入其它模块,这些模块不会自动包含在打包中,可以通过`--hidden-import`手动指定。
   - 确保导入的模块完整。例如检查有没有遗漏的模块依赖。

7. **版本兼容性**:
   - 检查PyInstaller和其他库的版本,确保它们之间的兼容性(有时候版本不匹配也会导致问题)。

8. **检查spec文件**:
   - 如果你使用了PyInstaller生成的spec文件,检查spec文件中`datas`部分是否正确配置。

9. **使用虚拟环境**:
   - 确保生成exe文件时使用的是与你开发和测试时相同的Python虚拟环境。

如果上述步骤仍未解决问题,可以将详细的错误信息记录并在社区求助,通常能够得到更多帮助。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
可以确定是 import pyautogui 这个库的问题  麻烦给我一个解决的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
tengke 发表于 2024-12-28 19:40
可以确定是 import pyautogui 这个库的问题  麻烦给我 ...


好的,针对`pyautogui`库在用PyInstaller打包成exe时出现的问题,你可以尝试以下方法来解决:

1. **使用`--hidden-import`**:
   PyAutoGUI有可能依赖一些在静态分析中未能自动识别的模块,通过`--hidden-import`添加它们。在生成exe时,尝试添加以下参数:
--hidden-import=PIL._tkinter_finder --hidden-import=pytweening

2. **正确添加数据文件**:
   如果`pyautogui`需要访问一些数据文件,确保你的`--add-data`中正确包含这些数据。对于`pyautogui`,可能涉及某些图片资源,如:
--add-data "D:\\软件\\djangoProject\\venv\\lib\\site-packages\\pyautogui\\*.png;pyautogui"
   确保文件路径为实际存在的目录。

3. **更新PyInstaller和PyAutoGUI**:
   确保你使用的是最新版本的PyInstaller和PyAutoGUI,因为更新版本中可能已经修复了相关问题:
pip install --upgrade pyinstaller
   pip install --upgrade pyautogui

4. **导入顺序**:
   确保`pyautogui`的导入在其他相关导入之后进行,因为有时导入顺序可能会影响。

5. **手动修改spec文件**:
   如仍有问题,可以考虑生成spec文件并手动修改。生成spec文件:
pyi-makespec --onefile "D:\软件\djangoProject\app\集中化脚本\exe文件创建.py"
   然后手动编辑spec文件,确保其`datas`和`hiddenimports`部分有正确的设置。

6. **测试简单脚本**:
   创建一个仅import`pyautogui`的简单Python脚本,例如:
import pyautogui
   print("PyAutoGUI imported successfully.")
   然后用PyInstaller打包和运行,以验证是否在简单场景下工作正常。

如果这些步骤依然不能解决问题,建议查看PyAutoGUI和PyInstaller的文档和社区,看是否有针对性的解决方案。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
我怀疑是 python 自身的 bug
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层

代码内容是import pyautogui
import time
print("PyAutoGUI imported successfully.")

time.sleep(20)

生成的exe文件内容是
pyinstaller --onefile       --add-data "D:\软件\djangoProject\venv\lib\site-packages\pyautogui;pyautogui" "D:\软件\djangoProject\app\集中化脚本\tjtcs.py"


生成的 exe文件  点击之后保错
Traceback(most recent call last):File "tjtcs.py",line 1,in <module>File "c:\Users\huawei\AppData\Local\Temp\_MEI489122\pyautogui\__init__.py", line 13, in <module>fromfutureimport absolute_import,division,print_functionModuleNotFoundError:No module namedfuture[47968] Failed to execute script 'titcs' due to unhandled exception!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
本帖最后由 tommyyu 于 2024-12-28 20:01 编辑

大意是找不到 __future__ 这个库对应的位置,我电脑上的 python 是有的,你可以使用
import sys
sys.modules['__future__']
代码来寻找它在你电脑里的位置,以检查是 python 本身出现缺陷或是这个库的检索存在问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
import requests
print(pyautogui.__file__)  
打印的内容的 是   D:\软件\djangoProject\venv\lib\site-packages\pyautogui\__init__.py
生成的exe程序包   保错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层
FishC 发表于 2024-12-28 19:40
好的,针对`pyautogui`库在用PyInstaller打包成exe时出现的问题,你可以尝试以下方法来解决:

1. ** ...


import requests
print(pyautogui.__file__)  
打印的内容的 是   D:\软件\djangoProject\venv\lib\site-packages\pyautogui\__init__.py
生成的exe程序包   保错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 5 天前 | 显示全部楼层
tengke 发表于 2024-12-28 20:52
import requests
print(pyautogui.__file__)  
打印 ...


当你在打包的exe程序运行时试图使用`pyautogui`库,并遇到报错,特别是当你输出`pyautogui.__file__`获得路径时没有问题,但运行可执行文件失败,可以尝试以下步骤来解决:

1. **检查返回信息**:首先,查看生成的exe程序报错的信息。这样可以确认具体报错的类型和位置。如果有更多详细的报错信息,可以进一步分析问题。

2. **功能测试**:在生成exe文件之前,在你的脚本中添加简单的`pyautogui`功能(如模拟鼠标移动)进行测试,确保在普通的Python环境下没有问题。

3. **依赖项问题**:
   - 有时PyInstaller可能会遗漏某些模块,尤其是动态导入的模块。尝试使用`--hidden-import`参数明确指定这些模块:
   
--hidden-import=PIL._tkinter_finder --hidden-import=pytweening --hidden-import=pyautogui

4. **打包命令优化**:
   - 你可以尝试一下更简洁的打包命令,仅加上必要的隐藏导入,然后一步步添加其他需要的资源:
   
pyinstaller --onefile --hidden-import=pyautogui "D:\软件\djangoProject\app\集中化脚本\exe文件创建.py"

5. **手动检查打包内容**:
   - 生成spec文件并手动查看和编辑,确保打包内容完整:
   
pyi-makespec --onefile "D:\软件\djangoProject\app\集中化脚本\exe文件创建.py"
   - 编辑生成的`exe文件创建.spec`文件,增加缺失的hiddenimports或datas。

6. **文件路径**:
   - 确保所有依赖项在生成的exe运行时可以找到,路径设置正确。在某些情况下,需要明确告诉PyInstaller哪里能够找到这些文件。

如果问题依然存在,建议简化问题代码,确认是`pyautogui`的问题后,逐步添加其他库和功能,找出冲突或具体问题点。同时,查看PyAutoGUI的文档或社区,看看有没有关于打包的特别说明。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
你的代码没打包之前能运行吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-2 20:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表