Beats 中的 Python
Python 用于 Beats 开发,它是用于实现系统测试和其他一些工具的语言。Python 依赖项通过虚拟环境进行管理,由 venv 提供支持。
Beats 开发需要 Python >= 3.7。
许多操作系统中通常都预装了 Python。如果您的系统中没有安装,可以按照 https://pythonlang.cn/downloads/ 提供的说明进行操作。
在 Ubuntu/Debian 系统中,可以使用以下命令安装 Python 3
sudo apt-get install python3 python3-venv
有针对特定次要版本(minor versions)的软件包,因此,例如如果您想使用 Python 3.7,可以通过以下命令进行安装
sudo apt-get install python3.7 python3.7-venv
建议使用 Python >= 3.7。
所有 make 和 mage 目标都会以透明的方式管理它们自己的虚拟环境,因此在为 beats 贡献代码进行最常见的操作时,无需做任何特殊处理。
make 使用的虚拟环境位于大多数 Beats 目录下的 build/python-env 中,它们由需要它们的目标创建,或者可以通过运行 make python-env 显式创建。mage 使用的虚拟环境则在需要时创建在 build/ve 下。
有一些环境变量可用于自定义这些虚拟环境的创建
PYTHON_EXE:要在虚拟环境中使用的 Python 可执行文件。它必须存在于 PATH 中。PYTHON_ENV:要使用的虚拟环境的路径。如果它不存在,则在需要时由make或mage目标创建。
虚拟环境也可以在不使用 make 或 mage 的情况下使用,例如在使用 pytest 运行单个系统测试时通常会这样做。有两种在虚拟环境中运行命令的方法
- 在当前终端中“激活”虚拟环境,运行
source ./build/python-env/bin/activate。可以通过运行deactivate来停用虚拟环境。 - 直接从虚拟环境路径运行命令。例如,可以执行
./build/python-env/bin/pytest来运行pytest。
要重新创建虚拟环境,请删除其目录。所有虚拟环境也会随 make clean 一起被删除。
旧版本的 Beats 与 Python 3 不兼容。如果您需要暂时处理其中一个版本的 Beats,并且不想删除当前的虚拟环境,可以使用环境变量在临时虚拟环境中运行命令。
例如,您可以使用以下命令在 Python 2.7 下运行 make update
PYTHON_EXE=python2.7 PYTHON_ENV=/tmp/venv2 make update
如果您需要运行测试,也可以创建一个虚拟环境,然后激活它以在其中运行命令
PYTHON_EXE=python2.7 PYTHON_ENV=/tmp/venv2 make python-env
source /tmp/venv2/bin/activate
...