首页 > 解决方案 > 为什么我的 py 脚本在终端中运行良好,但在使用 pyinstaller 编译时出现错误?

问题描述

我创建了一个 python 脚本,我想在我的树莓派上编译成一个可执行文件,但是我对 linux 的不熟悉正在妨碍我。为什么我在运行 pyinstaller 创建的可执行文件时出现错误,而我的脚本在终端中运行良好,否则?

为了检查脚本是否可以在我的 pi 上正常运行,我导航到终端中的正确目录并运行以下命令。

python <my python file>.py

我没有收到任何错误。它使用 requests 库发出 http post 请求,并使用 opencv 库进行图像压缩。看到它运行成功,我尝试安装 pyinstaller 并使用它将我的脚本编译成 linux 可执行文件。我用以下安装了它。

pip install pyinstaller

它似乎安装没有错误。不幸的是,我尝试使用以下代码开始编译,但遇到了错误。

pyinstaller <my python file>.py

这给了我错误“找不到命令”。相反,我尝试了以下代码来让它运行。

python -m PyInstaller <my python file>.py

这成功运行(即使我不完全理解其中的区别),我导航到名为 dlist 的新目录以查找可执行文件。我找到了可执行文件,但现在我发现了一个新问题。当我导航到终端中的 dlist 目录并运行可执行文件时,出现以下错误。

    Traceback (most recent call last):
  File "/home/Jonah/Downloads/ocr_with_api.py", line 3, in <module>
    import requests
  File "/tmp/pip-unpacked-wheel-RITpob/PyInstaller/loader/pyimod03_importers.py", line 391, in load_module
  File "/usr/lib/python2.7/dist-packages/requests/__init__.py", line 60, in <module>
    from .packages.urllib3.exceptions import DependencyWarning
ImportError: No module named urllib3.exceptions
[6374] Failed to execute script ocr_with_api

谁能帮帮我?有一段时间,错误消息的结尾是说没有名为 requests 的模块,但似乎我可能已经修复了这个问题,同时还收到一个新错误,说我没有名为 urllib3.exceptions 的模块...我真的很困惑.

仅供参考 - 当我输入python --version终端时,它告诉我我正在使用 Python 2 的版本。当我输入python3 --version终端时,它告诉我我正在使用最新版本。只要运行正常,我在 Python 2 中编译我的脚本就没有问题,我假设我只需要分别在终端中键入 python3 和 pip3 而不是 python 和 pip 即可使用 python 3 安装.

标签: pythonraspberry-pipyinstallerraspbian

解决方案


目前检查 pyinstaller 文档是否支持 python 2.7 和 3.5 到 3.7 你在使用 python 3.8 吗?有一种方法可以使 python 在终端中相关,当您键入时可能

pyinstaller <my python file>.py

Linux 或 raspbian 根本不承认它是一个 python 库或 python 命令,这就是为什么你必须在它前面加上“python -m” youtube上有很多教程介绍了如何在 linux 终端中运行 python 仍然会在树莓派上工作。所以是的,请检查您的 python 版本是否可以与 pyinstaller 一起使用并回复我们:D


推荐阅读