在中编译脚本。使用InstaPy的exe

2024-10-03 09:10:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Tkinter和InstaPy库为IG编写一个机器人。如果使用解释器运行脚本,一切正常,但在使用pyinstaller在.exe中编译脚本后,控制台在启动浏览器后返回此错误:

FileNotFoundError:[WinError 3]系统找不到指定的路径:“C:\Users\DANILG~1\AppData\Local\Temp\u MEI12802\instapy\firefox\u extension\manifest.json”

(在控制台中,错误文本用俄语书写,以下是翻译)

起初,我觉得这是由于转义了文件路径中的“/”。但除此之外,用户名在路径中也会更改(它必须是DanilGolovzin,而路径指定的是DANILG~1)。那么,如果您仍然尝试转到所需的目录,忽略用户名的转义和不匹配,那么_MEI71162将不会有instapy文件夹

console


Tags: 路径脚本tkinter错误机器人浏览器exe解释器
1条回答
网友
1楼 · 发布于 2024-10-03 09:10:22

出现问题的原因是pyinstaller。构建脚本时,在“browser.py”中

ext_path = os.path.abspath(os.path.dirname(__file__) + sep + "firefox_extension")

我们有这样的外路。当您以.py的形式运行它时,它会工作,但当您构建它时,我认为它会在Temp文件夹中运行,并尝试在该文件夹中找到它。因此,当它找不到时,会出现一个错误。我已经解决了这样更改“browser.py”的问题:

def create_firefox_extension():
    ext_path = os.path.abspath(os.path.dirname(__file__) + sep + "firefox_extension")
    # safe into assets folder
    zip_file = use_assets() + sep + "extension.xpi"
    files = ["manifest.json", "content.js", "arrive.js"]
    with zipfile.ZipFile(zip_file, "w", zipfile.ZIP_DEFLATED, False) as zipf:
        for file in files:
            try:
                zipf.write(ext_path + sep + file, file)
            except :
                new_ext_path = os.getcwd()+sep+"firefox_extension"
                zipf.write(new_ext_path + sep + file, file)

    return zip_file

firefox_extension

在做了这些更改之后,我将firefox_扩展名复制到了.exe文件夹,它运行起来没有任何问题

相关问题 更多 >