报错库

StockSight 报错排查:报错原文对上号,再决定查哪里

本站把三个仓库在本机跑出来的全部异常按「报错原文 → 所属层 → 下一步」整理成一张表。这些文本都是从日志里直接复制出来的,不是转述。

如果你只看到一句报错,先在下面搜关键词,再看对应那一节。

实测环境:Windows · Python 3.11.9 · pip 24.0覆盖三个仓库实测日期:2026-09-30

ModuleNotFoundError包没装 / 路径不对
ImportError装了但接口变了
metadata-generation-failed包的构建脚本有问题
示意图:本机实测到的三类报错与其归属层级,每一类的处理方向完全不同。全部原文可在留档日志中查到。
StockSight · 速查表

StockSight 报错怎么查?八条常见报错按关键词定位

左列是你在终端里能看到的那一行,右列是你应该采取的方向。

报错里的关键词所属层根因下一步
metadata-generation-failed + bdist_wheel依赖安装venv 里没有 wheel,而某个依赖只有源码包单独执行一次 pip install wheel,不要和别的包写在同一行
metadata-generation-failed + import feedfinder2依赖安装feedfinder2 0.0.4(2016)的 setup.py 在安装自己时先 import 自己跳过 newspaper3k,或 pip install --no-deps newspaper3k
lxml.html.clean依赖导入lxml 把 HTML 清理模块拆成独立包pip install lxml_html_clean
cannot import name 'StreamListener'代码兼容tweepy 4.x 移除了该接口pip install "tweepy<4",或改代码迁到 StreamingClient
No module named 'config'配置仓库只提供 config.py.samplecp config.py.sample config.py
No module named 'core'(C 路线 14 个模块一起报)测试命令unittest discover -s tests 没把仓库根加进 sys.path加 -t .:discover -s tests -t .
No module named 'pandas'(B 路线测试)测试依赖requirements.txt 不含 pandas,但测试文件在顶部 import 了它pip install pandas(CI 配置里也是这么装的)
405 METHOD NOT ALLOWED(POST 到 text-processing.com)外部服务该项目的外挂情感服务在本网络下不接受 POST不要用 --websentiment;或在自己的网络下单独验证

速查表只给方向。每一类的完整报错原文、触发命令与判断依据在下面的分节里。

StockSight · A 路线

老版 StockSight 安装失败在哪四层?为什么是串联的

这四层是顺序出现的——修好第一层才会看到第二层。

第 1 层:pip 解析阶段$ python -m pip install -r requirements.txt Collecting feedfinder2>=0.0.4 (from newspaper3k) Using cached feedfinder2-0.0.4.tar.gz (3.3 kB) Preparing metadata (setup.py): started Preparing metadata (setup.py): finished with status 'error' error: subprocess-exited-with-error × python setup.py egg_info did not run successfully. File "...\feedfinder2...\setup.py", line 15, in <module> import feedfinder2 ModuleNotFoundError: No module named 'feedfinder2' error: metadata-generation-failed
第 1 层(另一个面孔,取决于 venv 里有没有 wheel)error: invalid command 'bdist_wheel' error: metadata-generation-failed
第 2 层:newspaper3k 装上之后 import 仍然失败>>> import newspaper File "...\newspaper\parsers.py", line 12, in <module> import lxml.html.clean ImportError: lxml.html.clean module is now a separate project lxml_html_clean. Install lxml[html-clean] or lxml_html_clean directly.
第 3 层:tweepy 版本不兼容(sentiment.py 第 27 行)$ python sentiment.py --help Traceback (most recent call last): File "...\sentiment.py", line 27, in <module> from tweepy.streaming import StreamListener ImportError: cannot import name 'StreamListener' from 'tweepy.streaming'
第 4 层:缺少 config.py(stockprice.py 第 23 行)$ python stockprice.py --help Traceback (most recent call last): File "...\stockprice.py", line 23, in <module> from config import elasticsearch_host, ... ModuleNotFoundError: No module named 'config'
层修它需要做什么修完会看到什么注意点
1单独装 wheel;把 newspaper3k 摘出来单独处理其余七个包安装成功(exit 0)wheel 与目标包写在同一个 pip 命令里无效
2pip install lxml_html_cleannewspaper 可能可以导入,但未做全功能验证该包 2018 年后未更新,长期可用性未知
3pip install "tweepy<4"StreamListener / TweepError / Stream 三个导入成功本机验证 3.10.0 可用;仍需有效的 API 凭据
4cp config.py.sample config.py--help 能打印出参数说明还要把 ES 地址等填对,否则会在连接阶段失败

完整的前置条件与可行顺序见「安装与运行」页。这里只回答「看到这条报错该怎么办」。

StockSight · B 路线

StockSight 新闻情绪 Skill 的文档命令为什么跑不通

这个仓库的主流程可跑,但 README 给的两条命令都需要补一步。

按 README 装完 requirements 后跑测试$ pytest tests/ ==================================== ERRORS ==================================== _________________ ERROR collecting tests/test_news_sources.py _________________ ImportError while importing test module '...\tests\test_news_sources.py'. Traceback: tests\test_news_sources.py:9: in <module> import pandas as pd E ModuleNotFoundError: No module named 'pandas' =========================== short test summary info =========================== ERROR tests/test_news_sources.py !!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!! 1 error in 0.23s
补装 pandas 之后$ pip install pandas $ pytest tests/ ........................ [100%] 24 passed in 53.99s
问题为什么会出现正确做法
测试收集阶段失败requirements.txt 只列了 4 个运行时依赖,不含 pandas;测试文件在模块顶部 import 了它照 .github/workflows/ci.yml 装:pip install pytest pandas
sentiment 命令返回中性,看起来「没生效」不是报错,是模型边界:VADER 与 TextBlob 对财经术语会返回 0换 backend,或接受该结果并记录(详见情绪模型页)
permission / 许可不确定性仓库无 LICENSE 文件,README 写 MIT、SKILL.md 写 Apache 2.0商用前向作者确认,不要自行选一个

这个仓库的 CI 配置写得比 README 更准确——它明确装了 pytest pandas。遇到「文档说能跑但实际跑不了」时,先看项目自己的 CI 配置,这是最少被修饰的信息源。

StockSight · C 路线

StockSight 异动分析 Skill 的测试命令为什么缺参数

这个仓库依赖最少、跑得最顺,唯一的坑在测试命令上。

README 里写的命令$ python -m unittest discover -s tests -v EEEEEEEEEEEEEE ====================================================================== ERROR: test_analysis (unittest.loader._FailedTest.test_analysis) ---------------------------------------------------------------------- ImportError: Failed to import test module: test_analysis Traceback (most recent call last): File "unittest\loader.py", line 419, in _find_test_path File "unittest\loader.py", line 362, in _get_module_from_name File "...\tests\test_analysis.py", line 4, in <module> from core import HistoryBar, MACDResult, ... ModuleNotFoundError: No module named 'core' ---------------------------------------------------------------------- Ran 14 tests in 0.001s FAILED (errors=14)
加上 -t . 之后$ python -m unittest discover -s tests -t . ................................................................ ---------------------------------------------------------------------- Ran 160 tests in 12.842s OK
问题根因修正验证标准
14 个测试模块全部导入失败-s tests 只会把 tests/ 加进 sys.path,仓库根不在其中,因此 import core 失败加 -t . 指定顶层目录为仓库根输出 Ran 160 tests ... OK
快照报告里出现空表不是报错,是渲染问题:表头被输出但无数据行暂无官方修正;接入时自行校验表格是否为空「最终判断」与「关注维度」应显式提示数据缺失
成交额显示为 RMB 389,400,000万单位换算逻辑问题接入前先校验数值量纲成交额应为合理量级
注意 Ran 14 tests 与 Ran 160 tests 的差别:前一次不是「14 个测试失败」,而是「14 个测试文件都加载不了」。读 unittest 输出时要区分「Ran N」里的 N 是文件数还是用例数。
StockSight · 外部依赖

有哪些不是报错、但一样会卡住的外部因素

它们不会给你 Traceback,只是「没数据」或「连不上」。

因素本机观测表现怎么排查
外挂情感服务POST http://text-processing.com/api/sentiment/ 返回 HTTP 405启用 --websentiment 时拿不到结果,情绪回落到中性先手动 POST 一次看状态码;405 说明该请求方式不被接受
Twitter 相关文档站TLS 握手超时无法按 README 的链接申请凭据换网络环境或在浏览器里访问确认;本站未验证凭据可用性
新闻源网页结构页面可访问(HTTP 200)但源码用 i.next.next.next.next 取值,页面改版即取不到内容且不报错检查脚本是否打印出标题;没有就是抓取失效
行情接口本机返回 200、976 条 2 分钟线本次可用该地址非公开文档接口,参数或返回结构可能变化
「没有报错但没有数据」是最难排查的一类。建议做法:任何抓取步骤后都打印一条计数日志(抓到几条、过滤掉几条、入库几条)。StockSight 老版其实做了这件事(打印 news headlines: N, filtered: M, filter-ratio),这是它值得保留的设计。
StockSight · 通用排错顺序

遇到没见过的报错应该怎么排查

这套顺序对三个仓库都适用,也能推广到其它 Python 项目。

  1. 先看报错指向哪一个文件哪一行

    StockSight 的所有异常都能直接定位到行:sentiment.py 第 27 行、stockprice.py 第 23 行、feedfinder2 setup.py 第 15 行。行号比报错文本更能说明问题。

  2. 分清是「没装」还是「装了但接口变了」

    ModuleNotFoundError 属于前者,ImportError: cannot import name ... 属于后者。前者的解法是装包,后者多半要降级或改代码。

  3. 去项目自己的 CI 配置里找正确命令

    B 路线的 README 漏了 pandas,但 ci.yml 里写了;C 路线的 README 漏了 -t .。CI 文件是「作者实际跑过」的命令,可信度高于 README。

  4. 确认是不是「静默失败」

    没有报错、没有数据,通常是抓取选择器失效或过滤条件把数据全丢了。看计数日志,或者临时把过滤条件放宽再跑一次。

  5. 把环境和版本记下来

    几乎所有这类报错都与 Python 版本、pip 版本、依赖解析结果相关。本页全部结论都基于 Windows / Python 3.11.9 / pip 24.0,你的结果可能不同。记录版本是复现的前提。

FAQ

关于 StockSight 报错排查的常见问题有哪些

为什么我按教程装,一次就成功了?

可能的原因有三个:你用的是几年前的 Python 版本(例如 3.6/3.7),此时 pip 会解析到旧版依赖;你的环境里已经装过 wheel 与部分依赖;或者教程本身就省略了前置步骤。本站的四层失败链是在全新隔离虚拟环境里从零开始跑出来的,以你自己的环境为准。

把 tweepy 降级会不会影响其它项目?

会,如果装在全局环境里。tweepy<4 与使用 4.x 的其它项目不能共存于同一环境。建议为 StockSight 单独建虚拟环境,以 Python 官方 venv 文档为准。这也是本站实测全程使用独立 venv 的原因。

newspaper3k 到底能不能修好?

本机把它单独安装(--no-deps)成功了,但 import newspaper 仍因 lxml.html.clean 报错;按提示补装 lxml_html_clean 后本机未做进一步验证。考虑到该包最新版是 2018 年发布的,长期方案建议换用仍在维护的正文抽取库。以 PyPI 上该包的发布记录为准。

「Ran 14 tests」到底是 14 个用例还是 14 个错误?

在这个例子里,是 14 个测试文件全部加载失败(每个文件算 1 个错误),不是 14 个用例跑挂了。区分方法:看 FAILED (errors=14) 里的 errors 与 Ran 14 tests 是否相同,以及错误堆栈是不是清一色的 ModuleNotFoundError——如果是,通常就是路径问题而不是逻辑问题。

没有报错但程序不产出数据,怎么办?

按顺序查四件事:①抓取到的原始条数是否为 0(选择器失效);②过滤后条数是否为 0(白名单门槛太严,StockSight 老版的默认白名单只围绕 Tesla);③情绪判定是否为全中性(模型的边界问题,不是数据问题);④写入是否失败(ES 未启动)。StockSight 老版会打印抓取/过滤计数,优先用这个日志。

本页的报错会不会随版本变化失效?

会。这些报错是 2026-09-30 在特定版本组合下复现的,依赖升级、包被修复或仓库更新都可能改变结果。因此每条都写了触发命令与判断关键词,你可以自己重新验证。以你运行时的实际输出为准。

如果这些坑你都不想踩,还有哪些别的路线

EasyClaw 的本机技能可以免部署做行情取数、资讯检索、技术分析与出图。顶部导航的「对比」里有同一张对照表。