// 红队渗透 · 2025-01-26

Kali Linux配置多版本python环境:使用pyenv实现环境隔离与灵活切换

Kali Linux 作为一款滚动更新的安全研究和渗透测试发行版,其 Python 环境默认跟随系统更新,通常只提供一个主要版本。然而,在实际渗透测试中,我们经常需要同时使用多个 Python 版本,或者为不同项目隔离依赖。

pyenv 是一个强大的 Python 版本管理工具,可以轻松实现跨版本管理,满足不同项目对不同 Python 版本的需求。本教程将详细介绍如何在 Kali Linux 上安装和配置 pyenv,实现多版本 Python 的管理。


1. 准备工作

在安装 pyenv 和多个 Python 版本之前,需确保系统具备必要的编译工具和依赖库。由于 Kali Linux 的默认环境可能缺少部分开发包,完成准备工作是成功安装的关键。

1.1 安装依赖

运行以下命令,更新系统并安装编译 Python 所需的依赖包:

sudo apt update && sudo apt install -y \
    make build-essential libssl-dev zlib1g-dev \
    libbz2-dev libreadline-dev libsqlite3-dev wget \
    curl llvm libncurses5-dev libncursesw5-dev \
    xz-utils tk-dev libffi-dev liblzma-dev python3-openssl git

命令说明

  • make、build-essential:提供基本的编译工具。
  • libssl-dev、libffi-dev:支持 SSL/TLS 和外部函数接口。
  • zlib1g-dev、libbz2-dev:启用压缩功能。
  • libreadline-dev:支持交互式命令行输入。
  • libsqlite3-dev:支持 SQLite 数据库功能。
  • wget、curl:用于下载文件。
  • llvm、xz-utils:优化编译和解压支持。
  • tk-dev:支持 Tkinter GUI 开发。
  • python3-openssl、git:为后续安装提供基础支持。

验证安装

运行以下命令,确保工具已正确安装:

gcc --version && make --version && git --version

输出版本号表示依赖安装成功。

1.2 检查系统 Python 环境

Kali 默认的 Python 版本与系统工具(如 apt)深度绑定,直接移除可能导致系统不稳定。先检查当前 Python 状态:

python3 --version
which python3

输出示例:

Python 3.11.8
/usr/bin/python3

1.3 清理潜在冲突(可选)

若系统 Python 与后续安装冲突(如需特定版本的 pip),可选择性移除部分组件:

sudo apt remove -y python3-apt && sudo apt autoremove

注意:谨慎操作,避免影响系统核心功能。


2. 安装 pyenv

2.1 一键安装 pyenv

根据操作系统选择安装方式:

  • macOS: 使用 Homebrew 安装:
    brew update
    brew install pyenv
  • Linux(如 Kali): 使用 curl 或 git 安装:
    curl https://pyenv.run | bash
    或:
    git clone https://github.com/pyenv/pyenv.git ~/.pyenv

安装完成后,pyenv 默认位于 ~/.pyenv 目录。

2.2 配置 Shell 环境

需将 pyenv 集成到 Shell 中才能正常使用。以 Zsh(Kali 默认 Shell)为例,Bash 用户可替换为 ~/.bashrc。

编辑配置文件

运行:

vim ~/.zshrc

在文件末尾添加以下内容:

# Pyenv 环境配置
export PATH="$HOME/.pyenv/bin:$PATH"              # 将 pyenv 添加到 PATH
eval "$(pyenv init --path)"                       # 初始化 pyenv PATH
eval "$(pyenv init -)"                            # 启用 pyenv 命令补全
export PYENV_VIRTUALENV_DISABLE_PROMPT=1          # 禁用虚拟环境提示符干扰
eval "$(pyenv virtualenv-init -)"                 # 启用虚拟环境支持
export PYTHON_BUILD_MIRROR_URL="https://mirrors.aliyun.com/python"  # 使用阿里云镜像加速下载

应用配置

使配置生效:

source ~/.zshrc

验证安装

检查 pyenv 是否可用:

pyenv --version

输出类似 pyenv 2.x.x 表示安装成功。

2.3 更新 pyenv(可选)

为获取最新功能,可定期更新:

pyenv update

3. 安装 Python 版本

pyenv 支持安装几乎所有 Python 版本,包括 2.x、3.x 及 PyPy 等变种。

3.1 查看可安装版本

列出可用版本,并筛选 3.x 系列:

pyenv install --list | grep " 3\."

输出示例:

  3.6.15
  3.7.17
  3.8.19
  3.9.19
  3.10.14
  3.11.8
  3.12.2

3.2 安装指定版本

  • 安装 Python 3.9.5:
    pyenv install 3.9.5
  • 安装 Python 2.7.18:
    pyenv install 2.7.18

验证安装

检查已安装版本:

pyenv versions

输出示例:

  system
  2.7.18
* 3.9.5 (set by /home/user/.pyenv/version)

* 表示当前激活的版本。

3.3 卸载版本

清理不再需要的版本:

pyenv uninstall 3.9.5

3.4 常用版本管理命令

  • 查看已安装版本:
    pyenv versions
  • 查看当前全局版本:
    pyenv global
  • 设置全局版本:
    pyenv global 3.10.6
  • 设置项目本地版本:
    pyenv local 3.6.8
    这会在当前目录生成 .python-version 文件。

4. 虚拟环境管理

pyenv-virtualenv 是 pyenv 的插件,默认随安装脚本集成,用于创建隔离的 Python 环境。

4.1 创建虚拟环境

基于已安装的 Python 版本创建:

pyenv virtualenv <version> <env_name>

示例:

pyenv virtualenv 3.10.6 my_project_env

4.2 激活与停用

  • 激活虚拟环境:
    pyenv activate my_project_env
    或设置为目录本地环境:
    pyenv local my_project_env
  • 停用虚拟环境:
    pyenv deactivate
  • 列出所有虚拟环境:
    pyenv virtualenvs

4.3 安装依赖

在虚拟环境中使用 pip 安装包:

pyenv activate my_project_env
pip install requests
python3 -c "import requests; print(requests.__version__)"

4.4 删除虚拟环境

清理不再需要的虚拟环境:

pyenv virtualenv-delete my_project_env

注意:若删除某个 Python 版本,其关联的虚拟环境将失效。


5. 全局与局部环境切换

pyenv 提供灵活的版本切换机制,支持全局和局部级别。

5.1 设置全局版本

  • 使用系统默认:
    pyenv global system
  • 使用特定版本:
    pyenv global 3.9.5
  • 使用虚拟环境:
    pyenv global my_project_env

验证

检查当前版本:

python3 --version
which python3

5.2 设置局部版本

为特定项目目录绑定版本:

cd /path/to/project
pyenv local my_project_env

效果:

  • 生成 .python-version 文件记录绑定。
  • 进入目录自动激活,离开恢复全局设置。

检查文件

cat .python-version

输出:my_project_env

5.3 版本优先级

pyenv 的版本选择优先级从高到低为:

  1. Shell 级别:pyenv shell <version>,仅当前会话有效。
  2. 局部级别:pyenv local <version>,项目目录优先。
  3. 全局级别:pyenv global <version>,默认全局生效。

6. 验证与调试

6.1 检查当前环境

pyenv version
which python3
python3 --version

6.2 查看所有版本

pyenv versions

输出示例:

在这里插入图片描述

解释:

  • system 是系统默认的 Python 版本;
  • 3.9.6 是通过 pyenv 安装的 Python 版本;
  • 3.9.6/envs/myenv 是基于 3.9.6 创建的虚拟环境;
  • myenv 是当前激活的虚拟环境。

pyenv 管理了多层 Python 版本,包括系统版本、直接安装的版本以及基于某个版本创建的虚拟环境。在这个示例中,myenv 是一个基于 3.9.6 创建的虚拟环境,而这个虚拟环境又被 pyenv 当作一个独立的 Python 版本来管理。


通过本教程,您可以在 Kali Linux 中实现:

  • ✅ 并行安装多个 Python 版本
  • ✅ 按需切换全局/局部环境
  • ✅ 为不同项目创建隔离的虚拟环境

建议搭配 pipenv 或 poetry 进行更精细的依赖管理。遇到问题可通过 pyenv doctor 命令诊断环境。

原文 https://blog.csdn.net/2301_79518550/article/details/145373004