You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新闻摘要工具打包为exe后出现Article.download() 404错误如何解决

问题原因及解决方案

该报错并非网络连接导致,核心问题是打包为exe后依赖资源、底层库的适配缺失,具体原因和对应解决方法如下:

1. nltk资源路径异常

你代码中每次执行summarize()函数都会调用nltk.download('punkt'),py文件运行时资源会默认下载到当前用户的nltk_data目录,程序可正常读取;但打包为exe后,运行时的临时工作目录和用户目录路径不匹配,程序无法找到已下载的punkt分词资源,会触发后续解析异常,误报URL不存在。

解决办法:

  • 先本地手动下载punkt资源,放到和py文件同级的nltk_data/tokenizers目录下
  • 在代码开头添加路径适配代码,兼容打包后的运行环境:
import os
import sys
# 适配打包后的临时路径
if getattr(sys, 'frozen', False):
    base_path = sys._MEIPASS
else:
    base_path = os.path.dirname(os.path.abspath(__file__))
nltk.data.path.append(os.path.join(base_path, 'nltk_data'))
  • 打包时将整个nltk_data文件夹一起打进包内,用pyinstaller的话对应添加参数:
    • Windows系统:--add-data "nltk_data;nltk_data"
    • Mac/Linux系统:--add-data "nltk_data:nltk_data"

2. newspaper库打包依赖缺失

newspaper库底层依赖lxml、PIL、requests等多个库的动态链接文件,默认打包时不会全部收录,会导致article.download()、article.parse()步骤执行异常,触发URL not found的通用报错。

解决办法:

打包时显式指定导入newspaper的依赖项,pyinstaller打包命令添加如下参数:

--hidden-import newspaper --hidden-import lxml --hidden-import PIL --hidden-import requests

如果你安装的是newspaper3k版本,将上面的newspaper替换为newspaper3k即可。

优化建议

  • 把nltk.download('punkt')移到程序初始化位置,不要放在summarize函数内,避免每次点击按钮都重复下载资源
  • 给URL解析步骤添加异常捕获,方便定位具体报错原因,避免抛出通用模糊报错:
try:
    article = Article(url)
    article.download()
    article.parse()
    article.nlp()
except Exception as e:
    # 可自行添加弹窗提示逻辑展示具体错误
    print(f"处理失败:{str(e)}")
    return

额外排查点

如果上述操作完成后还是报错,检查运行exe的设备是否开启了代理、防火墙或者杀毒软件拦截了程序的网络请求,手动给exe添加白名单即可。

内容的提问来源于stack exchange,提问作者vincent owen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:57:03