使用 cloudscraper 模块创建 .exe (pyinstaller) 时出错

Error creating .exe (pyinstaller) with cloudscraper module

我正在尝试从我的 python 脚本创建一个 .exe。该脚本使用 cloudscraper 包。当我创建 .exe 并执行它时,它显示以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'C:\...\MEI1....\cloudscraper\user_agent\browsers.json'

错误仅在我尝试执行 .exe 文件时出现。

为什么会这样? pyinstaller 无法使用 cloudscraper 吗?

项目结构如下所示:

C:\Users\andre\OneDrive\Documentos\Programming\Python\Python3\proyect

proyect 
   |
   |______ main.py
   |
   |______ services
           |________ __init__.py
           |_______ main_service.py
           |_______ sql_service.py

这与我的项目结构非常相似,因为很明显,我无法分享我项目的实际项目结构。

您的 .exe 文件正在寻找 browsers.json,但您没有将该文件移动到与 .exe 文件相同的路径。使用 pyinstaller 需要有处理相对和绝对路径的良好经验,否则,您将面临那种错误。

如果 cloudscraper 不是您的项目树的一部分(可能是隐藏的导入):

  1. 尝试从 here 复制名为 'cloudscrapper' 的文件夹并将其粘贴到与 .exe 文件相同的路径中

找到的解决方案是将所需的文件夹复制到 .exe 路径中,但就目前而言,我发现如果您使用 则无法实现--onefile 用于创建 .exe 的修饰符,您不应该使用它并在这样的 .exe 路径中复制 cloudscraper 文件夹,这应该可以工作

注意: 路径是 NOT THE PARENT FOLDER cloudscraper,而是嵌套文件夹,其中包含 user_agent 文件夹

检查此 link:

在创建 exe 时添加此命令。

--add-data "path_for_cloudscraper_folder;./cloudscraper/"

path_for_cloudscraper_folder替换为你cloudscraper文件夹的路径。

您可以从 pc 浏览并找到您的 cloudscraper 文件夹路径或从 github 下载它。

此处./cloudscraper/用于在输出的根目录中添加cloudscraper文件夹。 (预计它正在根目录中搜索丢失的 cloudscraper 文件夹)