安装与环境 · 含失败原文

investpy 怎么装成功:pip 报 bdist_wheel 的原因与修复命令

官方 README 只给了一行 pip install investpy。在新版 pip 上,这行命令会直接失败——不是网络问题,也不是权限问题,而是 PyPI 上只有源码包、没有 wheel。本站把失败原文、根因和实测可用的修复命令完整记录下来。

实测时间:2026-10-12pip 24.0Python 3.11.9 / Windows成功版本:1.0.8

三条安装路径

路径 Apip install investpy → 失败
路径 B加 --no-build-isolation → 成功
路径 C从源码装 master → 本站未实测
共同前提装成功 ≠ 取数成功
安装路径对照示意,依据本机实测整理。路径 C 出现在官方 README 中,但本站未实测,因此标为未验证。
Install routes

两条可验证的安装路径对照

左列是官方给出的路径,右列是本站实测的结果与替代做法。表格里的每一条命令都可以直接复制执行。

路径命令本机实测结果适用场景 / 注意点
官方推荐pip install investpy失败:invalid command 'bdist_wheel'README 原文写法;pip ≥23 的隔离构建环境不再预置 wheel
本站验证可用pip install setuptools wheel 后 pip install investpy --no-build-isolation成功,装出 版本 1.0.8适合本机快速落地;--no-build-isolation 意味着用当前环境的构建依赖
官方源码路径pip install git+https://github.com/alvarobartt/investpy.git@master未实测README 称 master「始终可用」,但 master 最后提交停在 2022-10-02
手动构建下载 sdist 后 python setup.py install未实测老式写法,新 setuptools 已不推荐;仅作最后手段
指定版本pip install investpy==1.0.8 --no-build-isolation与路径 B 等价需要锁版本时使用;PyPI 上共 50 个历史版本
离线安装先在可联网机器上构建 wheel 再拷贝未实测内网/隔离环境场景;需自行构建,PyPI 不提供 wheel

为什么必须加 --no-build-isolation:pip 默认会在一个全新的隔离环境里构建包,而那个环境里没有 wheel,于是 bdist_wheel 这条命令找不到;加上该参数后,pip 改用你当前环境里的 setuptools 和 wheel,构建即可完成。

Failure log

失败现场:报错原文逐行解读

下面是本机 pip install investpy 的真实输出(节选)。看懂这几行,就能判断自己遇到的是不是同一个问题。

Collecting investpy
  Downloading .../investpy-1.0.8.tar.gz (4.4 MB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Preparing metadata (pyproject.toml): started
  Preparing metadata (pyproject.toml): finished with status 'error'
  error: subprocess-exited-with-error
  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [15 lines of output]
        ... UserWarning: Usage of dash-separated 'description-file' ...
        creating 'investpy-1.0.8.dist-info'
        error: invalid command 'bdist_wheel'
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
输出行它在说什么你要关注的点
Downloading investpy-1.0.8.tar.gzpip 只找到源码包(sdist),没有 wheel没有 wheel 就一定要本地构建,这是后面所有问题的起点
Installing build dependencies … done隔离构建环境已就绪这一步成功不代表构建能成功,它只装构建所需的最小依赖
Preparing metadata (pyproject.toml)pip 试图生成包元数据该库是老式 setup.py 项目,pip 通过兼容层调用它
invalid command 'bdist_wheel'构建环境里缺少 wheel 工具这是根因;报错发生在 setuptools 内部子进程
metadata-generation-failed元数据生成失败,安装终止pip 会把根因包在中间,直接看最后两行容易误判为 pip 故障
likely not a problem with pippip 声明问题不在自身不要因为这句话去重装 pip,方向错了
Fix

修复步骤:四步装出可用的 investpy

每一步都给出命令与预期输出。预期输出按本机实测结果填写,你的环境可能略有差异。

  1. 创建隔离环境

    python -m venv venv-investpy,然后激活。预期输出:命令行出现虚拟环境前缀;后续所有命令都在该环境中执行。

  2. 先补齐构建依赖

    pip install setuptools wheel。预期输出:Successfully installed setuptools-… wheel-…。这一步是后面 --no-build-isolation 能生效的前提。

  3. 用不隔离的方式安装 investpy

    pip install investpy --no-build-isolation。预期输出:Successfully installed investpy-1.0.8 …,同时会解析出 pandas / numpy / requests / lxml 等依赖。

  4. 验证安装结果

    python -c "import investpy;print(investpy.__version__)"。预期输出:1.0.8。此时「装」这件事已经完成——注意,这不等于能取数。

依赖版本不保证:该库的 requirements 只写了 numpy>=1.17.2 与 numpy>=1.21.2(同一行出现两次)且没有上界,因此会解析到当前最新的 numpy 2.x 与 pandas 3.x。本站实测正是在 pandas 3.0.6 / numpy 2.4.6 上完成导入与离线名录调用的,但这不等于所有功能都与新版兼容。

After install

装完之后,实际装到了什么?

「装成功」和「装成了什么」是两件事。下表是修复路径成功后,本机环境里真实落地的东西。

检查项本机实测值说明
investpy 版本1.0.8与 PyPI 最新版本一致(2022-01-24 上传)
顶层公开名数量102 个含 9 类资产函数组 + 搜索 + 指标 + 日历;search_events 未导出
pandas / numpy3.0.6 / 2.4.6项目未设上界,解析到当前最新版
requests / lxml2.34.2 / 6.1.3抓取与解析依赖
离线名录调用成功19 个名录/枚举函数全部返回
联网取数调用失败(403)与本页主题不同,属于可用性问题
Compatibility

Python 版本与依赖边界

官方声明与实测可行范围并不一致,这一页把两者都写清楚,避免你用「官方说支持到 3.9」误判。

项官方声明本机实测结论
Python 版本python_requires='>=3.7',classifier 只列 3.7/3.8/3.93.11.9 可装、可 import、离线名录可用未声明支持不等于不能跑,但属未验证范围
CI 覆盖GitHub Actions:ubuntu + windows × 3.7/3.8/3.9未复跑 CI官方测试覆盖止于 3.9
numpy 上界无上界(且同一文件写了两条 numpy 约束)解析到 2.4.6,导入正常存在潜在 ABI 风险,锁版本时需自测
数据源依赖requests / lxml新版本下请求仍能发出,只是被 403 拦库侧依赖不是故障原因
构建依赖README 未提及必须显式装 wheel 才能构建官方文档缺项,本页补齐
可选依赖setup.py 提供 tests / docs extras未安装仅开发者需要,普通使用者可忽略
安装期现象可能原因处理方式
invalid command 'bdist_wheel'构建环境缺 wheel装 setuptools+wheel 后加 --no-build-isolation
下载超时 / 连接重置网络或镜像问题更换 PyPI 镜像源后重试
numpy 编译相关报错平台无预编译包锁定到有 wheel 的 numpy 版本
pandas 版本冲突与既有环境抢依赖使用独立虚拟环境,不要装进全局
权限拒绝装到了系统目录改用虚拟环境,避免 --user 与系统混装

为什么官方 CI 不能替你保证:仓库的 GitHub Actions 只在 ubuntu 与 windows 的 Python 3.7 / 3.8 / 3.9 上跑测试。这意味着三件事官方**没有**覆盖:更新版本的 Python、经过时间变化后的依赖解析结果、以及现在的 Investing.com 端点状态。三者恰好是今天最容易出问题的部分,因此「本机实测」在这里不是多余步骤。

你会看到的问题属于哪一类要不要自己解决
装不上、构建报错打包方式过时要,本页已给可复制的命令
导入报错、依赖冲突环境与依赖范围要,用隔离环境 + 锁版本
离线名录报文件缺失安装不完整要,重装并确认解包完整
联网调用返回 403上游服务端策略不要,改代码无效
返回 200 但结果为空搜索词或过滤条件要,调整查询参数

FAQ

investpy 常见问题:还能装吗、还能取数吗、换什么

investpy 必须用 Python 3.9 以下吗?
官方没有这么说。setup.py 写的是 python_requires='>=3.7',classifier 与 CI 覆盖 3.7–3.9,这代表「官方测试过的范围」而不是「可用的边界」。本站实测在 Python 3.11.9 上安装、导入与离线名录调用都正常。不过要注意未声明支持的范围官方不做保证,是否长期稳定需你自己的环境验证。
不加 --no-build-isolation 有没有别的办法?
可以先把项目构建成 wheel 再安装(例如在能联网的机器上构建后拷贝安装),也可以尝试更老的 pip 版本。本站只实测了「先装 setuptools 与 wheel,再加 --no-build-isolation」这一条路径,其余路径未验证,请以你实测结果为准。
装完了 import 报错怎么办?
先确认报错发生在哪一步。ModuleNotFoundError: No module named 'investpy' 通常是装到了别的解释器或没激活虚拟环境,用 pip show investpy 看路径;如果报 ERR#0056: stocks file not found,则是包内数据文件缺失,属安装不完整,重装并确认 sdist 解包完整即可。
为什么依赖会解析到 pandas 3.x?
因为项目的依赖文件只写了 pandas>=0.25.1,没有上界,pip 自然选当前最新版。版本 1.0.8 发布于 2022 年,当时的 pandas 还是 1.x,所以「官方测试过的组合」与「今天装出来的组合」并不相同。需要稳定组合时请自行锁版本并做回归测试。
在 Windows 上安装有额外步骤吗?
本站的全部实测都是在 Windows + Python 3.11.9 上完成的,没有额外步骤,核心仍是那一步 --no-build-isolation。虚拟环境创建、激活命令与 Linux/macOS 不同(Windows 用 venv-investpy\Scripts\activate),其余相同。
安装成功就能取数了吗?
不能。安装成功只说明 Python 能加载这个包;数据来自 Investing.com 的内部端点,本站实测该端点在联网时被 Cloudflare 以 403 拦截。请把「安装」与「可用性」当成两个独立问题,后者见可用性核验页。

装好之后,先看返回结构还是先看能不能用?

建议先确认可用性:本机实测联网端点被 403 拦截,「装得成功」和「取得到数」是两件独立的事。确认之后再看历史数据的字段结构。