Installation

FinanceDatabase 安装:pip install financedatabase 与依赖实测

本库是纯 Python 包,安装本身通常只要一条 pip 命令。真正的坑集中在三处:装到了哪个解释器、依赖版本对不对、以及装完能不能真的取到数据。下面按这三层展开,每一层都给可直接复制的命令与自检方法。

官方:pip install financedatabase依赖:financetoolkit(连带 pandas 3.0 / numpy 2.4)用途:证券代码/元数据查询
pip install financedatabase基础安装
pandas核心依赖
Python 环境运行环境
上游数据源装完还要能连通
安装入口示意(安装包 / 依赖 / 环境 / 上游可达性),基于官方 README 与 PyPI 公开信息。

事实核验卡(核验日期 2026-09-29)

FinanceDatabase 版本
2.4.0(PyPI 与 GitHub Release,2026-06-02 发布)
Python 版本
3.11.9(本站实测);包要求 ≥3.10, <3.16
数据库快照
GitHub main 分支 compression/*.bz2(main 最后提交 2026-09-27)
核验日期
2026-09-29
Equities 行数
112,718 行 × 21 列
ETF 行数
36,481 行 × 9 列
数据来源
raw.githubusercontent.com/JerBouma/FinanceDatabase/main/compression/
最后验证时间
2026-09-29(本机 venv 实跑,输出已归档)

以上数字来自本站 2026-09-29 在 Windows + Python 3.11.9 + financedatabase 2.4.0 下的真实运行输出,不是从文章里转抄的;数据文件由上游持续更新,行数会变,以官方 PyPI 与 GitHub Release 为准。采集时 GitHub star 约 9,374(2026-09-29)。

FinanceDatabase · pip install

方式一:pip 安装(常见起点)

官方 README 与 PyPI 都把 pip 作为主要安装方式。但真实环境千差万别:同一台机器可能装了多个 Python、可能有公司代理、可能要求可复现的版本锁定。下面这张表按「你的实际情况」逐行给命令与注意点,而不是只给一条通用命令。

你的情况建议命令说明适用场景注意点
首次安装pip install financedatabase从 PyPI 拉取发布版(实测 2.4.0),并连带解析出 35 个包全新环境,只想先跑通一次查询确认 pip 与后续运行的 python 来自同一个解释器
已有旧版要升级pip install -U financedatabase升级到 PyPI 上的最新发布怀疑字段或数据比旧版旧升级后要重启进程,正在运行的解释器仍用旧版本
不确定装没装上python -c "import financedatabase as fd; print(fd.__version__)"能打印版本即导入成功排查「是不是没装上」版本号以 PyPI 发布页为准,不以本文为准
用 conda 管理环境先 conda activate 环境名,再用 pip 安装本库conda 环境下仍建议用 pip 装本库数据科学/notebook 环境pip 与 conda 混用最容易装到另一个环境
国内网络慢或超时配置 pip 镜像或代理后重试先解决「包拉不下来」,本地代码无问题公司内网、境外源不稳定镜像的同步频率与 PyPI 可能有差异
要让环境可复现安装时用 == 指定版本号锁定版本写进 requirements.txt团队协作、定时脚本具体版本号以 PyPI 发布页为准
只在某个项目里用先建虚拟环境再安装不污染全局解释器多个项目依赖不同 pandas 版本每开一个新终端都要重新激活环境
内网机器装不了先在有网机器上把包与依赖下载下来,再拷进内网安装受管网络的常见做法服务器没有外网出口下载与安装的解释器、操作系统要一致,否则拿过去也装不上
不想装任何环境改用免部署的对话式技能路线不开本地环境,直接在客户端里提问只想先看到数据结果,不打算维护工程两条路线能力边界不同,见功能特性与许可边界
一句话判断:安装命令本身不是难点,「装完能不能取到数」才是。装完请直接跑本页「装完不等于能用」一节的自检清单,别停在「import 没报错」这一步。表里「内网机器装不了」与「不想装任何环境」两行对应的是两种完全不同的替代路径,方向选错会白花不少时间。
FinanceDatabase · Environment

环境与依赖要求

本库的依赖面很窄,这是优点也是边界:它只负责把证券清单取回来,行情、财务数据都不在它的职责范围内。因此环境准备的重点不在「装多少东西」,而在「把解释器、依赖与网络出口这三件事对齐」——这三件里任何一件不对,外在表现都是同一个:「装好了却用不了」。

依赖项作用不满足时的表现适用场景注意点
Python运行环境版本过低时安装或导入直接失败全新机器具体最低版本以 PyPI 页面的 Requires 字段为准
pandas把证券清单组织成 DataFrame 返回缺 pandas 时导入报错;版本冲突时表现为报错或行为异常任何查询场景pandas 大版本差异会直接影响下游代码写法
pip安装与升级pip 过旧可能拉不到最新发布安装/升级用 pip -V 确认 pip 属于哪个解释器
虚拟环境隔离依赖不隔离时容易和别的项目抢 pandas 版本多项目共存venv 与 conda 选一个即可,别混用
可用的网络出口拉取上游证券清单导入正常,但查询返回空或长时间无响应首次查询「导入成功」不等于「数据可取得」,这是本页的第二个重点
多个 Python 共存决定 pip 会把包装进哪一个装了却导入不到,或导入到的是另一个环境里的旧版机器上同时有商店版与官网版用 python -m pip 显式绑定解释器,不要裸用 pip
系统编码与时区影响输出的可读性与时间类字段的解释终端中文显示为乱码;时间字段按 UTC 理解导致偏差结果要落盘或要做时间对齐乱码多是终端编码问题,不一定是数据本身有问题
磁盘与内存存放与处理证券清单数据量大时内存紧张一次性拉全量再筛选先按条件筛选再取全量,能明显减少内存占用
行情数据源(可选)补上价格类数据只有代码和元数据,没有价格需要做回测或画图本库不提供行情,需另接数据源,见证券类别与数据来源
边界说明:以上依赖项与版本下限以官方 README、PyPI 的 Requires 字段为准;不同发布时间点常有变化,请以官方页面为最终依据。
FinanceDatabase · Steps

分步安装与验证

每一步都给「命令 + 为什么 + 预期看到什么」。这个顺序不是凑数:从解释器到环境、到安装、再到取数,先确认内层再确认外层,出错时就能一眼定位到具体环节;反过来做,很容易在错误的方向上反复重装。

  1. 确认解释器

    python -V 与 pip -V,两条输出里的 Python 路径应当指向同一个环境。为什么要先做这步:绝大多数「装了却 import 不到」都源于两个命令其实属于不同解释器。预期输出:两条命令都打印出版本号与同一个路径前缀。

  2. 创建并激活虚拟环境

    python -m venv .venv,随后按系统激活(Windows:.venv\Scripts\activate;macOS/Linux:source .venv/bin/activate)。为什么:把本库与它要用的 pandas 关进一个独立环境,避免和别的项目互相覆盖。预期输出:命令行提示符前出现环境名。

  3. 安装本库

    pip install financedatabase。为什么:从官方发布渠道取包,同时自动解析 pandas 依赖。预期输出:出现 Successfully installed 字样,并列出被安装的包名。

  4. 验证导入

    python -c "import financedatabase"。为什么:把「装上了」和「能导入」分开确认。预期输出:无任何输出即为成功;出现 ModuleNotFoundError 说明第 1 步或第 2 步没对齐。

  5. 验证真的能取到数

    在已导入本库的会话里执行 fd.Equities().select() 取一类证券列表,观察返回是否非空。为什么:导入成功只说明代码在,不说明上游数据通。预期输出:返回一个 DataFrame,行数大于 0。

  6. 记录环境

    pip freeze > requirements.txt。为什么:把当下这套可用的版本组合固定下来,换机器时能复现同样行为。预期输出:生成一个包含本库与 pandas 等依赖及版本号的文本文件。换机器时按这份文件重装,才能复现同一套行为。

FinanceDatabase · Post-install check

装完不等于能用:装后自检清单

这一节官方安装说明里没有,但它能挡掉最多的一类「明明装好了却什么都没有」的困惑。顺序是从内到外:先查环境,再查网络,最后查数据本身。每一行都写了明确的正常表现,对不上就是问题所在,不需要凭感觉猜。

顺序查什么怎么查正常表现异常表现与下一步
1解释器是否一致对比 python -V 与 pip -V 的路径两条路径前缀相同路径不同 → 用 python -m pip install financedatabase 明确指定解释器
2能否导入python -c "import financedatabase"无报错、无输出报 ModuleNotFoundError → 回到第 1 步
3依赖是否就位python -c "import pandas; print(pandas.__version__)"打印出版本号报错或版本异常 → 先升级/固定 pandas
4运行环境是否联网用一个最轻的请求确认出口可用请求能返回超时 → 检查代理、防火墙、公司网关
5上游数据源是否可达直接发起一次证券列表查询秒级到数十秒内返回非空 DataFrame长时间无响应 → 多为上游不可达,而非本库故障
6返回是否为空看返回对象的行数行数 > 0行数 = 0 → 先放宽筛选条件,再判断是否上游缺数据
7字段是否够用打印返回的列名存在代码、名称、国家/行业等元数据列列名与预期不符 → 以官方最新返回为准,不要按旧教程硬写列名
8是否误当行情源检查有没有价格类字段本库不提供价格需要价格 → 另接行情源,这是设计边界不是缺陷
9输出能不能直接用把查询结果写一个小文件看一眼中文正常、字段整齐、行数符合预期乱码 → 写文件时显式指定 utf-8;列错位 → 回到第 7 步核对列名
排查顺序很重要:从 1 到 8 逐层往下,不要跳。第 5、6 步失败与第 1、2 步失败是完全不同的两类问题,前者是数据可达性,后者是本地环境;把它们混在一起排查,通常会浪费掉大半天。还有一点:第 7 步打印列名时,如果列名与旧教程里看到的不一致,请以当前版本的实际返回为准——上游字段会调整,照抄旧列名是下游脚本报错的高频原因。
FinanceDatabase · Troubleshooting

安装与导入常见问题排查

下面这些是本库安装阶段最常见的场景。注意区分「装不上」和「装上了取不到数」——两者处理方式完全不同:前者是本地环境问题,改解释器或依赖就能解决;后者通常出在网络这一层,改本地配置往往无效。先归类再动手,能省下大量试错时间。表格最后一列写的是「怎么确认修好了」,避免把「看起来不报错了」当成已经修好。

现象常见原因处理建议怎么确认修好了
ModuleNotFoundError: No module named 'financedatabase'没装,或装到了另一个解释器用 python -m pip install financedatabase 指定当前解释器安装再跑一次导入命令,无输出即通过
命令在终端能跑,在 Jupyter 里却 import 不到Notebook 内核与终端不是同一个环境切换到装了本库的那个内核,或在 Notebook 内直接安装在 Notebook 里打印解释器路径核对
pandas 版本冲突报错项目里已有另一套 pandas 约束新建独立虚拟环境,或按 PyPI 的依赖约束调整 pandas导入与一次查询都能跑通
安装过程卡在下载网络出口受限或源不稳定配置代理或镜像后重试出现 Successfully installed
升级后行为没变化旧的 Python 进程/内核仍在运行完全退出进程后重开打印版本号确认已是新版
导入正常,查询返回空上游数据源不可达,或筛选条件过窄先放宽条件试一次,再确认网络出口宽条件能返回非空结果
终端里能跑,定时任务里失败定时任务的环境变量与交互终端不同(代理、PATH、是否激活)在脚本里显式指定解释器与环境,不要依赖「已激活」这个前提手动跑同一条命令能通过,即视为修好
查询很慢一次性取全量再筛选先按条件筛选,减少返回行数同一查询耗时明显下降
如实说明:上表中的报错原文为常见形态,具体报错文本以你的实际运行输出与官方仓库 Issues 为准;本页不复述未经核验的版本号与错误码。
FinanceDatabase · Other routes

方式二:源码方式、升级与配合使用

除 pip 外还有源码方式,另外两条容易混淆的事要在这里说清:升级不是必须,配合行情源才是常态。三件事放在一起看就会发现,长期真正需要维护的其实只有一件——版本与数据源的对齐。

源码方式

克隆官方仓库后把包目录放进项目路径即可使用,适合要跟最新提交或想读实现细节的人。它不解决依赖问题,pandas 仍需自己装好,升级也要自己拉取更新。适合需要改实现、跟最新字段的人,不适合只想稳定取数的人。

升级的取舍

升级能拿到更新的证券清单与字段,但也可能让旧脚本里写死的列名失效。生产脚本建议先锁版本,在另一个环境验证后再切,不要直接在生产环境升级。

配合行情源

本库只给代码与元数据,价格要另接数据源。常见分工是:这里拿代码,行情源拿价格,两边用代码字段对齐;代码口径不一致是这一步最常见的失败原因——不同行情源对交易所后缀、大小写、存托凭证的处理并不统一,建议先用几只你熟悉的标的做一次小范围对账,再批量处理。

披露:FinanceDatabase 与 EasyClaw 无已证实集成。本页并列介绍的两条路线相互独立:一条是本地装包并自己维护环境与数据源,另一条是不开环境、直接在客户端里提问,安装方式与前置条件完全不同,不能互相替代。
FinanceDatabase · Platforms

Windows / macOS / Linux 与国内网络的差异

命令基本一致,卡住的地方往往不一样。下表把差异按「卡在哪」整理出来,避免照着别的系统教程反复试——尤其在 Windows 上,多个 Python 共存导致的解释器错配是最常见的一类问题。

环境最容易卡住的地方建议做法适用场景注意点
Windows多个 Python 共存,python 与 pip 指向不同版本用启动器 py -3 -m pip 明确指定要装进哪个 Python本机装了商店版与官网版两个 Python激活脚本与 macOS/Linux 不同,路径分隔符也不同
macOS系统自带 Python 权限受限装独立版本并建虚拟环境,不要改动系统解释器开发机系统 Python 下安装容易被权限拦住
Linux发行版包管理器与 pip 混用统一走虚拟环境,避免系统级安装服务器、容器部分发行版对系统级 pip 安装有额外限制
Docker / 容器镜像内无网络或出口受限构建期安装依赖,运行期只跑查询定时任务运行期再去拉包会放大失败概率
国内网络拉包慢、上游数据源偶发不可达先配镜像解决拉包,再单独确认上游可达性本地开发这两件事要分开排查,不要混为一谈
代理环境pip 与运行时程序走的出口不一致分别配置 pip 代理与运行时网络出口公司内网能装不代表能查,反之亦然
无外网的内网机器装包与取数两件事都不可达先解决包怎么分发进去,再单独确认数据出口受管服务器这两件事走的往往不是同一条链路,不要指望一起解决
Jupyter / Notebook内核环境与终端环境不是同一个把环境注册为内核后再打开 Notebook研究分析终端装成功、Notebook 导入失败是典型症状
事实边界:上表为通用环境差异的经验整理,官方安装说明并未逐系统列出;具体步骤请以官方 README 与 PyPI 页面为准。如果你只在一台机器上自用,只需看与本机系统对应的那一行即可。
FinanceDatabase · Decision

该不该自己装:五类需求对照

安装是手段不是目的。先确认你要的是「证券清单」还是「价格行情」,这会直接决定这条路适不适合你。下面把常见需求逐条拆开:能直接用它的给做法,不该用的明确写出什么时候该换路线。

你的需求推荐路线理由什么时候该换路线
批量拿证券代码与元数据安装本库这正是它的定位,返回 DataFrame 便于二次处理不需要代码清单时,用它反而多一层
需要价格、成交量、财务指标本库 + 行情源本库只负责清单,价格必须另接只需要几只股票的行情时,直接行情源更省事
想先把问题问清楚,再决定是否建工程先用对话式技能路线试一次不开环境即可看到结构化结果,用来验证需求是否真实要长期复用、要写进流水线时,还是得自建
要做回测或策略研究本库 + 回测框架本库提供标的池,回测框架负责撮合与绩效回测框架自带数据时,清单环节可省
只做一次性的小样本查询不装,直接用现成工具一次性需求不值得维护环境与依赖开始周期性使用时再补环境
只想先核实一个想法先用对话式路线问一次拿到结构化结果就能判断想法是否成立需要长期复用、要写进流水线时再回来自建
要在受管服务器上运行容器内构建,锁版本可复现优先于最新环境无法联网时,需先解决构建期网络
提醒:本库的证券清单用于研究取数,不构成投资建议;任何基于它的策略结论都需要自行验证。判断该不该装时,只需问自己一句:这套环境我打算用一个月还是一年?只用一次就别装,长期使用才值得把版本与数据源对齐一次。
FinanceDatabase · Misconceptions

六个想当然:装之前先纠正

这些误解官方文档通常不会专门指出,因为对熟悉 Python 生态的人来说它们显而易见;但对刚接触这个库的人,每一条都可能耗掉一两个小时。把它们前置说清,比事后排查便宜得多。

想当然实际情况正确理解什么时候不影响你
装上就能查行情价格本库只提供代码与元数据价格必须另接行情数据源,这是设计定位而非缺陷你只需要一份可直接用的标的清单时
import 成功就等于装好了导入只验证代码在,不验证数据可达还要跑一次真实查询,确认返回非空你的环境已经确认过上游可达
包名和仓库名可以互换着写安装要用 PyPI 上的包名,GitHub 上的是仓库名两者指同一个项目,但安装命令必须用包名只在浏览器里查资料时无所谓
必须用 conda 才能装pip 才是官方主要方式venv 或 conda 都能用,选一个并保持一致即可—
升级总是更好新版可能调整字段,旧脚本可能失效先锁版本、在独立环境验证,再切到生产脚本里没有硬编码列名时
数据是实时更新的清单与元数据有自己的更新节奏,部分字段可能滞后对时效敏感的字段要自己确认更新情况,不要默认最新只做长期标的池筛选时
报错一定是库的问题多数报错来自解释器、依赖版本或网络出口按本页自检清单从第 1 步逐层排查—
必须先读完整英文文档才能上手安装与初期几类查询只需要几个固定函数先跑通三类调用,再按需回头查文档细节你要改实现或提交贡献时
一句总结:把「装包」和「取数」当两件事看待,本库相关的绝大多数困惑都会消失。本页只补充官方说明里不会写、但实际一定会遇到的判断,具体行为以官方 README 与 PyPI 页面为准。上表里没有一条需要额外工具才能验证,都是打开终端就能跑的命令。
FinanceDatabase · Dependency tree

实测依赖树:一条 pip install 到底装了什么?

本库在自己的 pyproject.toml 里只声明了一个直接依赖,但解析下来会连带装上一整条链。下表是 2026-09-29 在干净 venv 里执行 pip install financedatabase 的实际结果(Python 3.11.9 / Windows)。

包实测装到的版本由谁引入你要注意什么
financedatabase2.4.0你直接安装包本身只有 34 KB,真正的内容是运行时下载的数据文件
financetoolkit2.2.0本库声明的直接依赖只有一个装本库等于把整个 FinanceToolkit 装上;to_toolkit() 靠它工作
pandas3.0.6financetoolkit 要求 pandas>=3.0与你环境里已有的 pandas 2.x 会冲突,务必用虚拟环境
numpy2.4.6pandas 3.0 要求老代码若依赖 numpy 1.x ABI 需要注意
scikit-learn1.9.1financetoolkit带来 scipy 1.17.1、joblib、threadpoolctl 等一串
yfinance1.7.0financetoolkit免 key 的行情与基本面走这条链
openpyxl3.1.5financetoolkit只用于 Excel 读写
实测结论:「装一个轻量证券数据库」这个预期和实际不符——它会连带装上 pandas 3.0、numpy 2.4、scikit-learn、yfinance 等 35 个包。所以不要装进系统 Python,用 python -m venv .venv 隔离,否则很可能把你已有的数据环境顶坏。
First download

装完还不算完:首次查询要再下载约 19 MB 数据

这个包不在 wheel 里带数据。每次初始化一个类,代码都会去 raw.githubusercontent.com 拉对应的 .bz2;下面是从本节 2026-09-29 的实测记录里摘出的文件体积与耗时。

数据文件实测体积下载耗时覆盖内容
equities.bz214.9 MB13.8 秒112,718 行股票清单与元数据
etfs.bz21.3 MB1.8 秒36,481 行 ETF
funds.bz21.8 MB2.8 秒57,853 行基金
indices.bz21.2 MB2.0 秒91,181 行指数
currencies.bz245 KB0.7 秒2,556 行货币/货币对
cryptos.bz232 KB0.8 秒3,367 行加密货币
moneymarkets.bz220 KB0.9 秒1,367 行货币市场工具
连不上时你会看到的原文(本站实测,把地址指向不可达端口复现):
ValueError: Failed to load data from .../equities.bz2: HTTPSConnectionPool(...): Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。. Ensure you are able to access the file. It is possible it fails due to a firewall or other security settings. Sometimes Google Colab is also the culprit.
注意这里抛的是 ValueError 而不是网络异常,所以排查时不要只看 requests 类的报错。
  1. 把数据文件缓存到本地

    包在 use_local_location=True 时,会去读 site-packages/compression/ 目录。把这个目录建好、把七个 .bz2 放进去,加载耗时从 16.6 秒降到 2.9 秒(同机实测)。

  2. 注意 base_url 会被忽略

    实测发现:use_local_location=True 时传入的 base_url 参数不生效,代码固定去读 site-packages/compression/。想换目录要改包内路径,不能靠这个参数。

  3. 确认缓存生效

    连续两次 fd.Equities(),若第二次明显变快且断网也能跑通,说明缓存目录生效了。

FAQ

安装常见问题

包名与仓库名不一样,装哪个?

安装要用 PyPI 上的全小写包名 financedatabase;GitHub 上的是它的大驼峰仓库名,两者指同一个项目,查资料时两个名字都值得搜。以官方 PyPI 页面与仓库 README 为准。

需要哪个 Python 版本?

官方要求在 PyPI 的 Requires 字段中给出,会随发布时间调整,本页不复述具体数字。实践上建议使用仍在维护期内的 Python 版本,并配合虚拟环境使用,避免与系统解释器互相影响。以官方 PyPI 页面为准。

依赖多不多?装不上通常是哪一步卡住?

核心依赖是 pandas,依赖面较窄。装不上通常不是本库本身的问题,而是解释器不一致、pandas 版本冲突或网络出口受限这三类。按本页自检清单从第 1 步往下走,基本都能定位到具体环节。先分清是环境问题还是数据问题,比反复重装有效率得多。以官方 README 与 PyPI 为准。

装完就能拿到行情价格吗?

不能。本库提供证券代码与元数据,不提供价格类数据,这是设计定位而不是安装缺陷。需要价格时要另接行情数据源,再用代码字段把两边对齐。以官方说明与仓库 README 为准。

能在客户端里一键装好它吗?

无已证实集成。本库需通过 pip 自行安装;本机已核验的金融数据技能路线是另一条独立路线,走的是免部署取数,两者的前置条件与能力边界不同,不能互相替代。以官方仓库说明为准。

升级会不会让已有脚本报错?

有可能。新版可能调整列名或字段口径,写死列名的脚本容易失效。建议先在独立环境验证,再切到生产使用;用 requirements.txt 锁版本是可复现的前提。具体变更以官方仓库的发布说明为准。

下一步做什么?

安装并自检通过后,看首次运行示例跑通一次查询;也可以先确认数据覆盖范围,再决定要不要接行情源。