Setup Local Python Development Environment#
该项目使用 pyproject_ops 来管理 Python 环境, 安装依赖等. 依次使用下列命令既可创建虚拟环境以及安装依赖:
# 创建虚拟环境以及安装依赖
pyops venv-create
pyops install-all
# 当依赖发生变更时输入下列命令重新 resolve 并安装依赖
pyops poetry-lock
pyops install-all
该项目的 python 库依赖的原始定义是在 pyproject.toml 文件中, 而 requirements.txt 文件是由 poetry 自动生成的.
pyproject.toml
1[tool.poetry]
2name = "acore_ami"
3version = "0.1.1"
4description = "Tools for building and managing Amazon Machine Image (AMI) for AzerothCore WOTLK server."
5authors = ["Sanhe Hu <husanhe@gmail.com>"]
6
7
8[tool.poetry.dependencies]
9python = "^3.10"
10aws_lambda_event = "2.0.2"
11aws_console_url = "1.4.1"
12botocore = "1.33.13"
13boto3 = "1.33.13"
14boto_session_manager = "1.7.2"
15boltons = "21.0.0"
16config_patterns = "1.0.6"
17pathlib_mate = " 1.3.2"
18s3pathlib = "2.1.2"
19smart-open = "6.2.0"
20superjson = "1.0.2"
21pysecret = "2.2.4"
22jinja2 = "3.0.3"
23pynamodb = "6.0.0"
24pynamodb_mate = "6.0.0.3"
25simple_aws_ec2 = "0.7.3"
26
27
28[tool.poetry.dev-dependencies]
29# Don't put anything here, explicit is better than implicit
30
31
32[tool.poetry.group.dev]
33optional = true
34
35
36[tool.poetry.group.dev.dependencies]
37twine = "3.8.0"
38wheel = "0.37.1"
39rich = "12.6.0"
40fire = "0.5.0"
41
42
43[tool.poetry.group.doc]
44optional = true
45
46
47[tool.poetry.group.doc.dependencies]
48Sphinx = "5.3.0"
49sphinx-jinja = "2.0.2"
50sphinx-copybutton = "0.5.1"
51sphinx-design = "0.5.0"
52furo = "2023.03.27"
53nbsphinx = "0.8.12"
54rstobj = "1.2.1"
55pygments = "2.15.1"
56ipython = "8.10.0"
57docfly = "2.0.3"
58
59
60[tool.poetry.group.test]
61optional = true
62
63
64[tool.poetry.group.test.dependencies]
65pytest = "6.2.5"
66pytest-cov = "2.12.1"
67
68
69# --- addtitional dependencies for automation shell scripts
70[tool.poetry.group.auto]
71optional = true
72
73[tool.poetry.group.auto.dependencies]
74
75
76[build-system]
77requires = ["poetry-core>=1.0.0"]
78build-backend = "poetry.core.masonry.api"
本项目更新于 2024-06-04, 根据 python end of life status Python3.11 还有接近 3 年的生命周期, 并且已经经过 2 年的迭代变得比较成熟了, 而且我们项目的库目前没有发现不支持 3.11 的, 所以这个项目以及 AMI 中我们使用 Python3.11 作为默认的 Python 版本.