跳转到内容

确认更新

运行安装命令后,应先确认 ibapi 是否真的装进了你要使用的 Python 环境。不要只看安装命令最后一行是否出现 Successfully installed,还要检查版本、安装位置和导入路径。

这一页只确认 Python 包是否更新成功,不测试 TWS / IB Gateway 连接。连接测试放到后面的接口章节里更合适。

TWS API 包根目录通常会有版本文件:

API_VersionNum.txt

Windows 示例:

Terminal window
set "API_ROOT=C:\TWS API"
type "%API_ROOT%\API_VersionNum.txt"

示例输出:

API_Version=10.47.01

这个版本表示 API 包版本。后面看到 Python 包版本时,可能会显示成 10.47.1,少一个前导零,这是正常的版本格式差异。

用同一个 Python 查看已安装包:

Terminal window
python -m pip show ibapi

如果你使用虚拟环境,应写成:

Terminal window
"D:\你的项目目录\.venv\Scripts\python.exe" -m pip show ibapi

输出里重点看这些字段:

字段含义
Name应该是 ibapi
Version已安装的 Python API 包版本。
Location包安装到了哪个 Python 环境的 site-packages
Requires依赖包,常见会包含 protobuf

示例输出:

Name: ibapi
Version: 10.47.1
Location: d:\tws\web\.venv\lib\site-packages
Requires: protobuf

Version: 10.47.1API_Version=10.47.01 可以视为同一版本。判断时不要只按字符串逐字符比较。

pip show 只能说明某个 Python 环境里有安装记录。更稳妥的方式是直接导入:

Terminal window
python -c "import sys, ibapi; from ibapi import get_version_string; print(sys.executable); print(ibapi.__file__); print(get_version_string())"

虚拟环境写法:

Terminal window
"D:\你的项目目录\.venv\Scripts\python.exe" -c "import sys, ibapi; from ibapi import get_version_string; print(sys.executable); print(ibapi.__file__); print(get_version_string())"

示例输出:

D:\your-project\.venv\Scripts\python.exe
D:\your-project\.venv\lib\site-packages\ibapi\__init__.py
10.47.1

这三行分别说明:

输出判断方式
Python 路径是否是你后续运行脚本要用的 Python。
ibapi.__file__是否来自这个 Python 的 site-packages
get_version_string()是否和所用 TWS API 包版本一致或基本一致。

如果官方 API 包版本和 Python 导入版本明显不同,通常是以下原因:

现象常见原因处理方式
API_VersionNum.txt 是新版本,ibapi 仍是旧版本安装命令没有在新 API 包的 source/pythonclient 目录执行。重新进入新版本 source/pythonclient 后安装。
pip show ibapi 能看到版本,但脚本导入失败安装和运行不是同一个 Python。sys.executable 找出脚本实际使用的 Python。
ibapi.__file__ 指向意外目录机器上存在多个 ibapi 副本。用明确 Python 路径重新安装,并清理旧环境。
Version 只有前导零差异例如 10.47.0110.47.1通常不是问题,可继续确认导入路径。

如果遇到 ModuleNotFoundError、版本冲突或 protobuf 警告,建议先保存这几项输出:

Terminal window
python -c "import sys; print(sys.executable)"
python -m pip show ibapi
python -c "import ibapi; from ibapi import get_version_string; print(ibapi.__file__); print(get_version_string())"

它们能快速回答三个问题:

  1. 运行脚本到底用的是哪个 Python。
  2. 这个 Python 是否安装了 ibapi
  3. 导入的 ibapi 是否来自预期位置。

不要用 TWS 连接结果判断安装版本

Section titled “不要用 TWS 连接结果判断安装版本”

TWS API Python 包安装成功,不代表 Socket 连接一定成功。连接失败可能来自端口、只读模式、IP 白名单、TWS 未登录、IB Gateway 未启动、账户重新认证等原因。

因此确认更新时,先看 Python 包本身。等包、路径、版本都确认无误,再进入连接、行情、订单等接口测试。

  • IBKR TWS API Documentation:官方在 Updating The Python Interpreter 主题中把安装 Python client 后的确认步骤作为更新流程的一部分;核心是确认运行脚本的 Python 环境已经加载到新的 TWS API Python 包。