译文说明
注:本文为非官方翻译,可能存在疏漏;请以原文为准。
安装
简介
本指南演示两种主要方式,介绍如何在 Python 虚拟环境(virtual environment)中安装本项目。
项目文件
首先通过克隆 GitHub 仓库来获取项目文件。如果你打算为项目做贡献,或者运行自己的实例,通常会先 fork 仓库,然后克隆你自己的 fork:
1
| git clone https://github.com/<your_git_hub_id>/pysystemtrade.git
|
否则,只需克隆主仓库:
1
| git clone https://github.com/robcarver17/pysystemtrade.git
|
选项 1:pyenv + venv
pyenv
pyenv 是一个可以在同一台机器上方便管理多个 Python 版本的工具。它允许在“用户级别”和“项目级别”指定要使用的 Python 版本。这是一个很好用、易于上手、专注做好一件事的工具。建议先读一下官方介绍,了解它的大致工作原理,并不需要理解具体的技术细节。
https://github.com/pyenv/pyenv#how-it-works
pyenv 的安装说明在这里:
https://github.com/pyenv/pyenv#installation
首先安装 Python 本身。pysystemtrade 当前要求 Python 3.10 或更高版本:
安装完成后,运行 pyenv versions 应该能在输出中看到新安装的版本:
1
2
3
4
5
6
7
8
9
10
| $ pyenv versions
system
3.7.14
3.8.5
3.8.6
3.8.16
3.9.6
3.9.13
3.10.4
* 3.10.15
|
你的输出可能会不同,上面只是一个示例。
venv
https://docs.python.org/3.10/library/venv.html
现在我们要为本项目创建一个虚拟环境(venv)。这样可以把 pysystemtrade 的依赖与其他 Python 项目隔离开来:
1
2
| $ cd pysystemtrade
$ python -m venv .venv
|
这会在 pysystemtrade 项目目录内部 创建一个全新、隔离的 Python 环境,路径为 <your_path>/pysystemtrade/.venv。你可以给虚拟环境起任何名字(这里使用的是 .venv)。
现在激活虚拟环境:
1
| source .venv/bin/activate
|
激活后,命令行提示符会发生变化,大致类似:
这提示你当前正在使用该虚拟环境。你可以随时通过运行 deactivate 退出。
接下来需要告诉 pyenv:这个项目要使用 Python 3.10:
这会在项目根目录创建一个 .python-version 文件,让 Python 运行环境知道这里要使用 3.10.15 版本。可以通过运行 python 来检查:
1
2
3
4
5
| $ python
Python 3.10.15 (main, Nov 27 2023, 11:13:49) [Clang 14.0.0 (clang-1400.0.29.202)]
Type "help", "copyright", "credits" or "license" for more information.
>>>
< ctrl-D to exit >
|
依赖
现在开始在虚拟环境中设置依赖。先升级基础工具:
1
| (.venv) $ pip install --upgrade pip setuptools
|
然后安装项目及其依赖:
1
| (.venv) $ python -m pip install .
|
如果你打算为项目做贡献,还需要安装可选的开发依赖,并以 editable 模式安装:
1
| (.venv) $ python -m pip install --editable '.[dev]'
|
可以查看当前安装了哪些包,输出大致会类似:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| (.venv) % pip list
Package Version
----------------- -----------
black 23.11.0
blinker 1.8.2
click 8.1.7
contourpy 1.3.0
cycler 0.12.1
decorator 5.1.1
enum-compat 0.0.3
eventkit 1.0.3
exceptiongroup 1.2.2
Flask 3.0.3
fonttools 4.54.1
ib-insync 0.9.86
iniconfig 2.0.0
itsdangerous 2.2.0
Jinja2 3.1.4
joblib 1.4.2
kiwisolver 1.4.7
lz4 4.3.3
MarkupSafe 2.1.5
matplotlib 3.9.2
mock 5.1.0
mockextras 1.0.2
mypy-extensions 1.0.0
nest-asyncio 1.6.0
numpy 1.26.4
packaging 24.1
pandas 2.1.3
pathspec 0.12.1
patsy 0.5.6
pillow 10.4.0
pip 24.3.1
platformdirs 4.3.6
pluggy 1.5.0
psutil 5.6.7
pyarrow 17.0.0
pymongo 3.11.3
pyparsing 3.1.4
PyPDF2 3.0.1
pysystemtrade 1.8.2
pytest 8.3.3
python-dateutil 2.9.0.post0
pytz 2023.3
PyYAML 6.0.1
scikit-learn 1.5.2
scipy 1.14.1
setuptools 65.5.0
six 1.16.0
statsmodels 0.14.0
threadpoolctl 3.5.0
tomli 2.0.1
typing_extensions 4.12.2
tzdata 2024.2
tzlocal 5.2
Werkzeug 3.0.4
|
选项 2:uv
uv 是一个打包与环境管理工具,集成了 pip、pyenv、venv 等功能;你可以在这里了解更多信息。它使用 Rust 编写,速度 非常 快。
uv 的安装说明在这里:
https://docs.astral.sh/uv/getting-started/installation/
同样地,需要先安装 Python 本身。pysystemtrade 当前要求 Python 3.10 或更高版本:
1
| $ uv python install 3.10
|
安装完成后,运行 uv python list 应该能在输出中看到新安装的版本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| cpython-3.13.1+freethreaded-linux-x86_64-gnu <download available>
cpython-3.13.1-linux-x86_64-gnu <download available>
cpython-3.13.0+freethreaded-linux-x86_64-gnu /home/xxxxx/.local/share/uv/python/cpython-3.13.0+freethreaded-linux-x86_64-gnu/bin/python3.13t
cpython-3.13.0-linux-x86_64-gnu /home/xxxxx/.local/share/uv/python/cpython-3.13.0-linux-x86_64-gnu/bin/python3.13
cpython-3.12.8-linux-x86_64-gnu <download available>
cpython-3.12.7-linux-x86_64-gnu /usr/bin/python3.12
cpython-3.12.7-linux-x86_64-gnu /usr/bin/python3 -> python3.12
cpython-3.12.7-linux-x86_64-gnu /bin/python3.12
cpython-3.12.7-linux-x86_64-gnu /bin/python3 -> python3.12
cpython-3.12.5-linux-x86_64-gnu /home/xxxxx/.local/share/uv/python/cpython-3.12.5-linux-x86_64-gnu/bin/python3.12
cpython-3.11.11-linux-x86_64-gnu <download available>
cpython-3.11.9-linux-x86_64-gnu /home/xxxxx/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/bin/python3.11
cpython-3.10.16-linux-x86_64-gnu <download available>
cpython-3.10.15-linux-x86_64-gnu /home/xxxxx/.local/share/uv/python/cpython-3.10.15-linux-x86_64-gnu/bin/python3.10
cpython-3.9.21-linux-x86_64-gnu <download available>
cpython-3.9.16-linux-x86_64-gnu /usr/bin/python3.9
cpython-3.9.16-linux-x86_64-gnu /usr/bin/python -> /etc/alternatives/python
cpython-3.9.16-linux-x86_64-gnu /bin/python3.9
cpython-3.9.16-linux-x86_64-gnu /bin/python -> /etc/alternatives/python
cpython-3.8.20-linux-x86_64-gnu <download available>
cpython-3.7.9-linux-x86_64-gnu <download available>
pypy-3.10.14-linux-x86_64-gnu <download available>
pypy-3.9.19-linux-x86_64-gnu <download available>
pypy-3.8.16-linux-x86_64-gnu <download available>
pypy-3.7.13-linux-x86_64-gnu <download available>
|
接下来,用刚才安装的 Python 3.10 为项目创建虚拟环境:
1
| $ uv venv --python 3.10
|
这会在 pysystemtrade 项目目录内部 创建一个全新、隔离的 Python 环境,路径为 <your_path>/pysystemtrade/.venv。
你会看到类似的输出:
1
2
3
| Using CPython 3.10.15
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
|
然后按提示激活虚拟环境:
1
| source .venv/bin/activate
|
激活后,命令行提示符会发生变化,大致类似:
这表明虚拟环境已经被激活。你可以随时通过运行 deactivate 退出。
可以通过运行 python 来检查:
1
2
3
4
5
| $ python
Python 3.10.15 (main, Nov 27 2023, 11:13:49) [Clang 14.0.0 (clang-1400.0.29.202)]
Type "help", "copyright", "credits" or "license" for more information.
>>>
< ctrl-D to exit >
|
依赖
接下来安装项目及其依赖:
1
| (pysystemtrade) $ uv pip install .
|
如果你打算为项目做贡献,还需要安装可选的开发依赖,并以 editable 模式安装:
1
| (pysystemtrade) $ uv pip install --editable '.[dev]'
|
可以查看当前安装了哪些包,输出大致会类似:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| (pysystemtrade) $ uv pip list
Package Version Editable project location
----------------- ----------- ---------------------------------
black 23.11.0
blinker 1.9.0
click 8.1.8
contourpy 1.3.1
cycler 0.12.1
eventkit 1.0.3
exceptiongroup 1.2.2
flask 3.1.0
fonttools 4.55.8
ib-insync 0.9.86
iniconfig 2.0.0
itsdangerous 2.2.0
jinja2 3.1.5
joblib 1.4.2
kiwisolver 1.4.8
markupsafe 3.0.2
matplotlib 3.10.0
mypy-extensions 1.0.0
nest-asyncio 1.6.0
numpy 1.26.4
packaging 24.2
pandas 2.1.3
pathspec 0.12.1
patsy 1.0.1
pillow 11.1.0
pip 25.0
platformdirs 4.3.6
pluggy 1.5.0
psutil 5.6.7
pyarrow 19.0.0
pymongo 3.11.3
pyparsing 3.2.1
pypdf2 3.0.1
pysystemtrade 1.8.2 /home/xxxxx/github/pysystemtrade
pytest 8.3.4
python-dateutil 2.9.0.post0
pytz 2023.3
pyyaml 6.0.1
scikit-learn 1.6.1
scipy 1.15.1
setuptools 75.8.0
six 1.17.0
statsmodels 0.14.0
threadpoolctl 3.5.0
tomli 2.2.1
typing-extensions 4.12.2
tzdata 2025.1
werkzeug 3.1.3
|
测试
最后检查一下是否一切正常:
1
2
3
4
5
6
7
8
| (.venv) $ python
>>>
>>> from sysdata.sim.csv_futures_sim_data import csvFuturesSimData
Configuring sim logging
>>> data=csvFuturesSimData()
>>> data
csvFuturesSimData object with 249 instruments
>>>
|