本篇重点:本篇讲策略需要额外的 Python 库时,怎么在包管理里安装、升级和删除。
1 用之前:装好 Python
khQuant 安装版自带运行用的 Python 和常用库(numpy、pandas 等),但它的包管理不使用自带的 pip,而是调用你电脑上的 python 或 py 命令去下载,再装进 khQuant 自己的目录,不会改动你电脑上的 Python 环境。
所以第一次用之前:
- 从 Python 官网下载 64 位 Python 安装程序(3.11 或更新的版本都可以),安装时勾选「Add python.exe to PATH」。
- 装完后关掉 khQuant 再重新打开,让它读到新的 PATH。
没装 Python 时点安装,输出框会依次显示三次「命令启动失败」,最后是「外部 pip 调用失败」,并弹出「安装失败」:

2 安装一个包
工具栏「设置」→「包管理」标签页。页面上写着安装目录(默认 C:\Program Files (x86)\khQuant\user_packages)。

- 在输入框里写包名,例如
scikit-learn。 - 点「安装/更新」(或按回车)。按钮变成「安装中…」,输出框实时显示 pip 的输出。
- 结束后弹出「安装成功」或「安装失败」。安装成功的包,策略里直接
import就能用;如果没生效,重启软件。


这一页点了就装,不需要再点「保存设置」。同一时间只能装一个任务,装完之前不要关设置窗口。
输入框里的内容会原样交给 pip,所以可以这样写:
| 想做什么 | 输入框里写 |
|---|---|
| 安装 | scikit-learn |
| 指定版本 | scikit-learn==1.5.2 |
| 一次装多个 | scikit-learn statsmodels |
| 升级已经装过的 | -U scikit-learn |
| 临时换下载镜像 | -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn |
只写包名再点「安装/更新」,已经装过的包不会被升级,界面却会显示「安装成功」。要升级,请写 -U 包名。
输入的是 Python 标准库的名字(如 json)时,会弹出标题为「安装成功」的窗口,内容说明它是标准库、无需安装,并没有装任何东西。
3 装到了哪里、谁能用
- 位置:
<安装目录>\user_packages。 - 策略文件开头写了
from khQuantImport import *(自带案例和新建模板都有这一行)时,软件会自动把这个目录放进 Python 的搜索路径,后面的import就能找到。所以第三方库的 import 要写在这一行之后。 - 在界面里装的包,
kh命令行和 Web 回测同样能用。 - 覆盖安装新版本或卸载 khQuant 时,
user_packages会保留。
4 限制
- 只能装提供 wheel(预编译包)的库。只发布源码包的库,即使是纯 Python 写的,也会报「Could not find a version that satisfies the requirement」。
- 会连带安装依赖。依赖链上的库会一起装进
user_packages,可能比较大。如果依赖带来了和自带版本不同的 numpy、pandas,可能出现兼容问题,安装时尽量指定和软件兼容的版本。 - 没有卸载按钮。关掉软件后,到
user_packages里删掉对应的包文件夹和*.dist-info文件夹;想全部清空就删掉整个user_packages。在 Program Files 下删除需要管理员权限。 - 下载用的是系统 Python 的 pip 设置,镜像可以在 pip 的配置文件里设,也可以每次用
-i指定。
5 macOS 和 Linux
- macOS:没有包管理页,目前不支持在 Mac 版里安装第三方库。
- Linux:用 pipx 安装的 khQuant 在独立的虚拟环境里(Docker 镜像要自己基于镜像另装),给它加库用 pipx 自带的命令:
pipx inject khquant 包名。
常见问题
问:点安装后提示「外部 pip 调用失败」?
答:这句只表示三种 pip 调用方式都没有成功返回,要往上看具体原因:三次都是「命令启动失败」,才说明电脑上没有可用的 Python,安装 64 位 Python(勾选加入 PATH),重启 khQuant 后再装;如果是 pip 自己的报错(找不到版本、网络超时等),按那条报错处理,见下一问和第 4 节。
问:提示「Could not find a version that satisfies the requirement」?
答:包名写错了,或者这个包没有适用于 Windows 64 位、Python 3.11 的 wheel。核对包名,或者换一个版本、换一个替代库。
问:显示安装成功,但版本没变?
答:没加 -U。写 -U 包名 重新安装。
问:策略里 import 报 ModuleNotFoundError?
答:确认策略开头有 from khQuantImport import *,第三方库的 import 写在它后面;再确认包确实装进了 user_packages。
本篇基于 V3.4.1.10 编写。