0

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

FileNotFoundError: [WinError 3]系统找不到指定路径:'C:\Users\DANILG~1\AppData\Local\Temp_MEI12802\instapy\firefox_extension\manifest.json'。

(在控制台中,错误文本是用俄语写的,这里是翻译)

起初,在我看来,这是由于转义了文件路径中的“/”。但除此之外,路径中的用户名发生了变化(必须是DanilGolovzin,而路径指定了DANILG~1)。好吧,如果你仍然尝试去想要的目录,忽略用户名的转义和不匹配,那么_MEI71162将没有instapy文件夹。

安慰

4

1 回答 1

0

由于pyinstaller而出现问题。构建脚本时,在“browser.py”中

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

我们有这样的 ext_path。当您将它作为 .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_extension 复制到 .exe 文件夹,它运行没有任何问题。

于 2020-11-20T18:04:04.863 回答