使用 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 不是您的项目树的一部分(可能是隐藏的导入):
- 尝试从 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 文件夹)
我正在尝试从我的 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 不是您的项目树的一部分(可能是隐藏的导入):
- 尝试从 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 文件夹)