我正在使用Tkinter和InstaPy库为IG编写一个机器人。如果使用解释器运行脚本,则一切正常,但在使用pyinstaller在.exe中编译脚本后,控制台在启动浏览器后返回以下错误:
系统找不到指定的路径:'C:\Users\DANILG~1\AppData\Local\Temp_MEI12802\instapy\firefox_extension\manifest.json'.:FileNotFoundError: WinError 3
(在控制台中,错误文本是用俄语写的,这里是翻译)
起初,在我看来这是由于转义了文件路径中的"/“。但除此之外,路径中的用户名也会发生变化(它必须是DanilGolovzin,而路径指定为DANILG~1)。好吧,如果您仍然尝试转到所需的目录,忽略用户名的转义和不匹配,那么_MEI71162将不会有instapy文件夹。
发布于 2020-11-21 02:04:05
这个问题是由pyinstaller引起的。在构建脚本时,请在"browser.py“中
ext_path = os.path.abspath(os.path.dirname(__file__) + sep + "firefox_extension")我们有这样的ext_path。当你将它作为.py运行时,它可以工作,但当你构建它时,我认为它运行在临时文件夹中,并试图在该文件夹中找到它。所以当它找不到的时候,就会抛出错误。我已经解决了像这样改变"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复制到.exe文件夹中,它运行起来没有任何问题。
https://stackoverflow.com/questions/64705021
复制相似问题