我一直在尝试将我的程序转换为 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)。这就是我得到的:
尝试使用命令“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 中的环境对于初学者来说似乎非常粗略 运行以下命令:
pip freeze
它将显示您终端环境中安装的所有模块,这些模块可能与 Pycharm 中的模块不同
请注意,exe 更像是代码的二进制形式,它不会运行,并且错误不会停止编译器(并非在所有情况下)
运行命令“pip freeze”后检查模块“dotenv”是否在列表中
如果没有运行命令
pip install dotenv
然后使用 :
构建 exepyinstaller --onefile {nameOfYourPythonFileWithNoCurlyBraces}
如果不尝试使用命令运行文件,它将解决问题
窗户:
py {nameOfYourPythonFileWithNoCurlyBraces}
Mac/Linux:
python3 {nameOfYourPythonFileWithNoCurlyBraces}
or
python {nameOfYourPythonFileWithNoCurlyBraces}
示例:
py Home.py
python3 Home.py
python Home.py
发送错误消息
编辑:
模块请求内置于 python 中,并在您自行安装 python 后创建
删除 python 并从这里安装最新版本肯定会被修复
在 PyCharm 中安装库与在计算机本身上安装这些库不同。请务必使用 pip 安装您的项目所需的所有库,这样 PyInstaller 可以找到它们并将它们包含在您的可执行文件中。