首页 > 编程问答 >如何执行此命令而不需要每次打开 EXE 时手动执行它

如何执行此命令而不需要每次打开 EXE 时手动执行它

时间:2024-07-25 10:55:48浏览次数:13  
标签:python pyinstaller exe

我使用 pyinstaller 从我的 python 项目中制作了一个 exe 文件。当我尝试执行 EXE 文件时,我遇到了以下错误。

Traceback (most recent call last):
  File "main.py", line 7, in <module>
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
  File "prophet\__init__.py", line 12, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\ERWIN\\AppData\\Local\\Temp\\_MEI188562\\prophet\\__version__.py'

我在 pyinstaller 过程中遇到了各种警告,指出正在使用“冻结模块”,您可以解决问题。它还提到您可以将以下命令传递给 python 以禁用此功能。

python -m main.exe -Xfrozen_modules=off

这实际上是有效的。当我在执行 EXE 时在 CMD 中输入此命令时,应用程序运行正常。现在我不知道这个“冻结模块”是什么,但我知道每次你想打开应用程序时传递这个命令非常不方便。

我也不想使用任何其他东西来修复这(例如批处理文件)具体是因为我想将此应用程序转换为设置。

我尝试更改规范文件,更改代码本身以使其自动执行此命令,甚至制作批处理文件。这些都不起作用。

一如既往地感谢任何帮助。


遇到的问题与 PyInstaller 的冻结模块功能有关,该功能旨在通过将模块捆绑到可执行文件中来加速导入时间。但是,正如所发现的那样,它有时会导致问题,尤其是在涉及动态生成文件或版本的模块时,例如 prophet 似乎正在做的那样。

尽管 -Xfrozen_modules=off 参数有效,但每次运行 EXE 时手动添加它都不是理想的解决方案。以下是更永久的解决方法:

1. 使用 --hidden-import 标志:

PyInstaller 可能无法自动检测到 prophet 的所有依赖项。可以使用 --hidden-import 标志在构建时明确包含它们:

bash pyinstaller --hidden-import=prophet.__version__ -F main.py

如果还有其他缺失的模块,请将它们也添加到 --hidden-import 标志中。

2. 更新 PyInstaller:

如果使用的是旧版本的 PyInstaller,请尝试更新到最新版本。较新版本可能包含针对此类问题的错误修复和改进:

bash pip install --upgrade pyinstaller

3. 使用 spec 文件:

spec 文件提供对 PyInstaller 构建过程的精细控制。可以修改它以永久禁用冻结模块:

```python # 在你的 .spec 文件中 a = Analysis(...)

# 在 Analysis 对象中添加以下行 a.freeze_modules = False

pyz = PYZ(...) exe = EXE(...) ```

进行此更改后,使用 spec 文件构建的应用程序:

bash pyinstaller your_app.spec

4. 修改 prophet 包(不推荐):

作为最后的手段,如果 prophet 包中有一个选项可以禁用其动态版本控制或文件生成,可以探索该选项。但是,修改第三方包通常不是一个好主意,因为它可能会导致意外问题,并且在更新包时会使维护变得复杂。

解决问题后:

  • 清理构建文件: 在每次尝试不同的解决方案后,删除 build dist 文件夹以及 .spec 文件。这确保使用干净的状态进行构建。
  • 测试: 彻底测试的应用程序,以确保所选解决方案已解决该问题,并且的应用程序按预期工作。

希望这些解决方案之一可以帮助解决这个问题!如果有任何其他问题,请告诉我。

标签:python,pyinstaller,exe
From: 78766727

相关文章

  • 如何在Python中对轮廓图应用点画?
    我想向XarrayDataArray数据添加点画以指示重要性。该数据是经纬度网格上的二维气候数据。我想提供一个True/False掩码来绘制映射的变量数据。我正在尝试使用contourf来达到此目的,但如果它们更合适,我愿意接受其他方法。我尝试过使用contourf孵化点画重要区域,但......
  • 在 Python Notebook 中调用 `subprocess` 具有与 `!` shell 不同的 `$PATH`
    我正在IPython笔记本中交互地开发一个包装类。这个包装类调用用java编写的命令行程序,因此我需要访问用于编译该程序的相同版本的java运行时。但是,我注意到在笔记本中使用方便的!运算符,生成的shell实例与在我的终端中使用zsh时不同。这得到了确......
  • ProcessPoolExecutor 的递归使用挂起
    问题我尝试将aProcessPoolExecutor与递归调用一起使用,但它不起作用。我在下面创建了一个最小的示例fromconcurrent.futuresimportProcessPoolExecutorfromtimeimportsleepexecutor=ProcessPoolExecutor()i=3deftest():globaliprint(......
  • 在 VSCode 中激活 conda env 时,“which python”和“sys.path”给出不同的输出
    当我激活condaenv时,选择相应的解释器并在VScode中启动Python乍一看一切似乎都很好:(My_env)name@my_computer:~/Bureau/My_env/Code/current_dir$/home/name/anaconda3/envs/My_env/bin/python-mIPython--no-autoindentPython3.12.4|packagedb......
  • Python课程设计项目期末大作业(含免费源代码)
    选题代码下载地址:https://download.csdn.net/download/s44359487yad/89572689选题程序名称:口红色号识别器选题:基于图像处理、人脸识别和Flask构建的图片口红色号识别及商品推荐系统功能:根据上传的图片自动化图像处理后分析脸部特征,并判断其嘴部妆容状态,依托现......
  • python webbrowser.open 不使用默认浏览器
    对你们来说这是一个好奇的家伙..在我的python程序中webbrowser.open('etc..')打开MicrosoftEdge现在奇怪的是,我在与opensChrome(我的默认值)稍有不同的文件夹中还有另一个python程序关于发生了什么的任何想法吗?!!(我知道有人问过类似的问题,但......
  • 如何在 Mac 上运行 Python 文件来读取 txt 文件并将其写入外部硬盘?
    我目前有一个充满了我想阅读的epub的文件夹,一个我已经阅读过并想再次阅读的epub的文件夹,以及一个相应的文件,其中每个文件都有epub文件的名称。问题是,这些文件夹仅位于我的外部硬盘上。我想要做的是让我的脚本解析这些文件夹中的epub列表,并在我的下载文件夹中创建最新的副......
  • 深入探索:使用Python进行网站数据加载逻辑分析与请求
    作为一名资深的Python程序员,我经常需要从网站中提取数据以供分析或进一步处理。这项任务涉及到对网站数据加载逻辑的深入分析,以及使用Python进行高效的网络请求。在本文中,我将分享如何分析网站的数据加载方式,并使用Python的requests库来模拟浏览器行为,获取所需的数据。网站......
  • 如何将 Python 列表添加到 Excel 中已有值的列的末尾?
    我目前正在尝试编写一个程序,将值附加到列表中,然后将这些值添加到Excel数据表中的列中。每次运行该程序时,我都希望在同一列的末尾添加更多值。所以我不确定如何解决这个问题,而且我在网上找到的其他答案也没有取得多大成功。以下是使用openpyxl库在Python中将......
  • 如何学习Python:糙快猛的大数据之路(学习地图)
    在这个AI和大数据主宰的时代,Python无疑是最炙手可热的编程语言之一。无论你是想转行还是提升技能,学习Python都是一个明智之选。但是,该如何开始呢?今天,让我们聊聊"糙快猛"的Python学习之道。什么是"糙快猛"学习法?"糙快猛"学习法,顾名思义,就是:糙:不追求完美,允许存......