Python:EXE 在启动时崩溃

问题描述 投票:0回答:2

我一直在尝试将我的程序转换为 exe,但遇到了一些问题。在编程环境(PyCharm)中运行时它工作得很好,但是当我将它转换为 exe 并尝试运行它时,它在启动时立即崩溃(当它应该保持控制台实例显示它仍在运行并记录它是什么时)做)。

我已经一点一点地检查了我的脚本(注释掉部分),看看这个错误是在哪里出现的,似乎只要导入这两个模块,程序就会崩溃:

import requests
from dotenv import load_dotenv

以下代码是我编写的无尽打印代码的示例,在包含这些导入时也会以相同的方式崩溃:

import os
import time

import requests
from dotenv import load_dotenv

while 1:
    time.sleep(1)
    print("Hello")

当我注释掉导入时,程序将按预期运行:

import os
import time

# import requests
# from dotenv import load_dotenv

while 1:
    time.sleep(1)
    print("Hello")

我不知道为什么通过导入包含这些库会导致 python 编译器崩溃。

注意:exe 是在 PyCharm 环境中通过以下 pyinstaller 终端命令生成的:

pyinstaller --onefile Hello.py

任何帮助将不胜感激!!


我使用命令“pip freeze”运行我的cmd(Windows)。这就是我得到的: Windows CMD freeze

当我在 pycharm 终端上运行它时,我得到了这个:PyCharm Terminal freeze

尝试使用命令“py {name.py}”在Windows命令行上运行,并得到以下两个错误:

1.

回溯(最近一次调用最后一次): 文件“C:\Users\Leland Fowler\Documents\Programming Projects\AirTable\XML WatchDog\WatchDog2.py”,第 8 行,位于 导入 Airtable_API_Handler 文件“C:\Users\Leland Fowler\Documents\Programming Projects\AirTable\XML WatchDog\Airtable_API_Handler.py”,第 17 行,位于 导入请求 ModuleNotFoundError:没有名为“requests”的模块

回溯(最近一次调用最后一次): 文件“C:\Users\Leland Fowler\Documents\Programming Projects\AirTable\XML WatchDog\Hello.py”,第 5 行,位于 导入dotenv ModuleNotFoundError:没有名为“dotenv

”的模块

然后我尝试使用 pip 运行安装(python -m pip install requests python-dotenv)并收到以下消息:

已满足要求:c:\users\leland 中的请求 福勒 ppdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages (2.27.1) 已满足要求:python-dotenv in c:\用户\利兰 福勒 ppdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages (0.19.2) 已满足要求: urllib3<1.27,>=1.21.1 in c:\用户\利兰 福勒 ppdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages (来自请求)(1.26.8) 已满足的要求:idna<4,>=2.5 在 c:\users\leland 中 福勒 ppdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages (来自请求) (3.3) 已满足的要求: certifi>=2017.4.17 在 c:\users\leland 福勒 ppdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages (来自请求)(2021.10.8)已满足的要求: c:\users\leland 中的字符集标准化器~=2.0.0 福勒 ppdata\local\packages\pythonsoftwarefoundation.python.3.9_qbz5n2kfra8p0\localcache\local-packages\python39\site-packages (来自请求)(2.0.10)警告:您正在使用 pip 版本 21.2.4; 但是,版本 21.3.1 可用。你应该考虑升级 通过 'C:\Users\Leland 福勒\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe -m pip install --upgrade pip'命令。

现在我很困惑,因为我的系统似乎告诉我我已经安装了这些模块,但它们没有出现在我的冻结中,并且似乎无法加载到我的程序中......

python exe
2个回答
0
投票

最有可能的是 python 中的环境对于初学者来说似乎非常粗略 运行以下命令:

pip freeze 

它将显示您终端环境中安装的所有模块,这些模块可能与 Pycharm 中的模块不同

请注意,exe 更像是代码的二进制形式,它不会运行,并且错误不会停止编译器(并非在所有情况下)

运行命令“pip freeze”后检查模块“dotenv”是否在列表中

如果没有运行命令

pip install dotenv 

然后使用 :

构建 exe
pyinstaller --onefile {nameOfYourPythonFileWithNoCurlyBraces}

如果不尝试使用命令运行文件,它将解决问题

窗户:

py {nameOfYourPythonFileWithNoCurlyBraces} 

Mac/Linux:

python3 {nameOfYourPythonFileWithNoCurlyBraces}
or
python {nameOfYourPythonFileWithNoCurlyBraces}

示例:

py Home.py
python3 Home.py
python Home.py

发送错误消息

编辑:

模块请求内置于 python 中,并在您自行安装 python 后创建

删除 python 并从这里安装最新版本肯定会被修复


0
投票

在 PyCharm 中安装库与在计算机本身上安装这些库不同。请务必使用 pip 安装您的项目所需的所有库,这样 PyInstaller 可以找到它们并将它们包含在您的可执行文件中。

© www.soinside.com 2019 - 2024. All rights reserved.