云计算百科
云计算领域专业知识百科平台

在kali中配置python环境与使用pyenv管理python版本

标准做法

在 Kali 中配置 Python,最核心的原则是:千万不要随意修改或卸载系统自带的 Python。因为 Kali 默认预装的 Python 与系统底层的安全工具深度绑定,乱动会导致系统功能异常。

为了安全、高效地开发,我为你整理了以下标准配置流程:

第一步:确认与更新系统 Python

Kali 通常已经预装了 Python 3,我们先检查一下版本:

python3 –version

如果系统提示未安装,或者你需要更新到最新的基础包,可以使用 APT 包管理器:

sudo apt update
sudo apt install python3 python3-pip python3-venv -y

(注:python3-pip 用于安装第三方库,python3-venv 用于创建虚拟环境)

第二步:创建虚拟环境(⭐ 强烈建议)

在 Kali 中写代码或跑渗透脚本,必须使用虚拟环境,这样不同项目的依赖包就不会互相冲突,也不会弄脏系统环境。

  • 创建一个项目文件夹并进入:

    mkdir -p ~/python_project && cd ~/python_project

  • 创建虚拟环境(假设命名为 myenv):

    python3 -m venv myenv

  • 激活虚拟环境:

    source myenv/bin/activate

    激活成功后,你的终端提示符前面会出现 (myenv) 字样。

  • 第三步:编写与运行代码

    在虚拟环境激活的状态下,你可以使用任何你喜欢的编辑器(如 VS Code、Vim 或 Nano)来写代码。

  • 创建一个简单的测试脚本:

    nano test.py

    输入以下代码并保存退出:

    print("Hello, Kali Python!")

  • 运行脚本:

    python3 test.py

    看到输出结果,说明你的 Python 基础运行环境完全正常!

  • 第四步:安装第三方库

    在虚拟环境中,你可以放心地使用 pip 安装各种安全测试或开发库(例如网络数据包处理库 Scapy):

    pip install scapy

    (退出虚拟环境只需输入 deactivate 即可)

    截图里展示的这种操作方式,专业术语叫做“Python 虚拟环境”。

    简单来说,它的核心逻辑是:在一个独立的“隔离房间”里运行 Python,而不是直接在系统的大厅里跑。

    结合你的截图,我为你拆解一下它的具体操作流程和原理:

    1. 为什么要这么做?(核心原理)

    看你的截图,你在一个名为 mdirsearch 的文件夹里操作。

    • 如果不建虚拟环境: 你安装的库(比如 requests、scrapy)会全部塞进系统默认的 Python 目录里。如果你有两个项目,一个需要 库A 1.0版本,另一个需要 库A 2.0版本,系统就会打架,导致报错。
    • 使用了虚拟环境(截图的做法): 它在当前目录下生成了一个独立的文件夹(通常叫 venv 或项目名),里面有一套专属的 python 解释器和 pip 安装器。
      • 隔离性: 这里装的库只在这个文件夹生效,不影响系统,也不影响其他项目。
      • 安全性: 就算你把环境玩坏了,直接删掉这个文件夹就行,系统毫发无损。

    2. 截图中的操作步骤拆解

    你提供的截图展示了标准的“三部曲”:

    第一步:创建环境

    virtualenv mdirsearch

    • 含义: 告诉电脑,“请帮我在这个位置克隆一套全新的、干净的 Python 环境,名字叫 mdirsearch”。
    • 结果: 目录下多了一个文件夹,里面包含了 bin (Linux/Mac) 或 Scripts (Windows) 目录。
     第二步:激活环境(关键步骤)

    source ./activate.fish
    # 或者在普通 bash/zsh 中通常是:
    source ./bin/activate

    • 含义: “进入”这个隔离房间。
    • 现象: 注意看你的终端提示符变了!前面多了一个 (mdirsearch)。这意味着你现在输入的所有 python 或 pip 命令,调用的都是这个文件夹里的版本,而不是系统的。
    出现报错:

    遇到的问题是虚拟环境激活脚本缺失,这是 Kali Linux 上非常常见的配置问题。根本原因是系统没有安装 python3-venv 模块,导致 virtualenv 或 python3 -m venv 创建环境时无法生成 activate 脚本。

    第一步:安装缺失的 venv 模块

    在终端执行:

    sudo apt update
    sudo apt install python3-venv -y

    这一步会安装 Python 3 的虚拟环境支持模块,是创建 activate 脚本的前提。

    第二步:删除旧环境并重新创建

    由于之前的环境是不完整的,建议直接删除重建:

    rm -rf mdirsearch
    python3 -m venv mdirsearch

    使用 python3 -m venv 是官方推荐方式,比直接调用 virtualenv 更稳定、兼容性更好。

    第三步:正确激活环境

    现在你可以用标准命令激活了:

    source mdirsearch/bin/activate

    激活成功后,你的终端提示符前面会出现 (mdirsearch),表示你已进入隔离的 Python 环境。


    📌 为什么之前会失败?
    • 你使用的 virtualenv 命令虽然能创建目录结构,但如果没有 python3-venv 模块支持,它无法生成 bin/activate 这个关键脚本。
    • 你尝试的 source ./activate.fish 是为 Fish Shell 准备的,而 Kali 默认使用的是 Bash/Zsh,所以必须用 source ./bin/activate。

    💡 额外建议:验证环境是否正常工作

    which python3
    pip list

    你应该看到路径指向 mdirsearch/bin/python3,且包列表是空的(或只有 pip/setuptools),说明这是一个干净、独立的环境。

      第三步:安装与运行

      pip list

      • 含义: 查看当前“房间”里装了啥。你会发现里面非常干净,只有 pip 和 setuptools,没有系统里那些乱七八糟的库。

      💡 针对你 Kali Linux 的建议

      既然你在用 Kali,我强烈建议你使用 Python 自带的 venv 模块,而不是额外安装 virtualenv,因为 venv 是官方标准且更轻量。

      在 Kali 上复刻截图操作的命令如下:

    • 进入你的项目目录:

      cd ~/桌面/你的项目文件夹

    • 创建虚拟环境(命名为 venv):

      python3 -m venv venv

    • 激活它:

      source venv/bin/activate

      (此时你会看到提示符变成 (venv) kali@kali:…)

    • 开始干活:
      现在你可以放心地 pip install xxx 了,怎么装都不会搞坏你的 Kali 系统。

    • 退出环境:
      不想用了,输入 deactivate 即可回到普通模式。

      之后开启python环境

      在 Kali Linux 中开启(激活)你已创建的 Python 虚拟环境,只需执行一条命令:

      source mdirsearch/bin/activate

      执行成功后,你的终端提示符前面会显示 (mdirsearch),表示你已进入该虚拟环境。此时所有 python 和 pip 命令都会指向这个隔离环境内的版本,不会影响系统全局 Python。


      为什么是这个命令?

      • mdirsearch 是你之前用 python3 -m venv mdirsearch 创建的环境文件夹。
      • bin/activate 是 Linux/macOS 系统下 Bash/Zsh Shell 的标准激活脚本路径。
      • source 命令用于在当前 Shell 会话中加载并执行该脚本,从而修改环境变量(如 PATH),使虚拟环境生效。

      退出环境

      当你完成工作后,只需输入:

      deactivate

      即可退出虚拟环境,恢复系统默认的 Python 环境。


      温馨提示

      • 每次打开新终端窗口,都需要重新执行 source mdirsearch/bin/activate 来激活环境。
      • 如果你希望每次进入项目目录时自动激活,可以将激活命令写入 .bashrc 或使用 autoenv 等工具实现自动化。
      • 若你使用的是 Fish Shell,则应使用 source mdirsearch/bin/activate.fish。

      💡 进阶:如果你需要管理多个 Python 版本

      如果你以后需要同时使用 Python 3.11、3.9 甚至古老的 Python 2.7(为了跑一些上古的渗透脚本 POC),推荐使用 Pyenv 这个工具。它可以在不影响系统默认 Python 的情况下,帮你轻松安装和切换各种 Python 版本。

      一、安装 pyenv

      首先,你需要安装 pyenv 及其依赖:

      # 安装编译依赖
      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

      # 安装 pyenv
      curl https://pyenv.run | bash

      安装完成后,需要将 pyenv 初始化脚本添加到你的 Shell 配置文件中(如 ~/.bashrc 或 ~/.zshrc):

      echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
      echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
      echo 'eval "$(pyenv init –path)"' >> ~/.bashrc
      echo 'eval "$(pyenv init -)"' >> ~/.bashrc

      然后重新加载配置或重启终端:

      source ~/.bashrc

      若报错:

      pyenv 安装失败 + 配置未生效,根本原因是:

      • 网络问题导致 curl https://pyenv.run | bash 下载失败(DNS 解析不了 raw.githubusercontent.com);
      • 即使你手动写了配置到 .bashrc,但 pyenv 本体根本没装上,所以 source ~/.bashrc 后报“找不到命令 pyenv”。

      第一步:解决网络问题 —— 用国内镜像源安装 pyenv

      由于 GitHub 被墙或 DNS 污染,直接用官方脚本会失败。推荐使用 Gitee 镜像版安装器:

      # 使用 Gitee 镜像安装 pyenv
      curl -L https://gitee.com/jordanxu/pyenv-installer/raw/master/bin/pyenv-installer | bash

      ✅ 这个脚本会自动从 Gitee 克隆 pyenv 核心代码,绕过 GitHub 网络限制。


      第二步:正确配置环境变量(关键!)

      安装完成后,你必须把以下三行添加到你的 Shell 配置文件中(Kali 默认是 ~/.bashrc):

      echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
      echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
      echo 'eval "$(pyenv init –path)"' >> ~/.bashrc
      echo 'eval "$(pyenv init -)"' >> ~/.bashrc

      然后重新加载配置:

      source ~/.bashrc

      ⚠️ 注意:不要只写前两行!第三、四行是初始化 pyenv 的关键,缺少它们会导致 pyenv 命令不可用。


      第三步:验证安装成功

      运行以下命令确认 pyenv 已正常工作:

      pyenv –version

      你应该看到类似输出:

      pyenv 2.3.36

      如果还是提示“找不到命令”,说明安装没成功或路径没配对。你可以手动检查:

      ls -la ~/.pyenv/bin/pyenv

      如果文件存在,说明安装成功了,只是环境变量没生效 —— 请重新执行 source ~/.bashrc 或重启终端。


      📌 额外建议:后续安装 Python 版本时加速

      当你用 pyenv install 3.10.4 安装 Python 时,可能会很慢或失败。可以提前设置国内镜像源:

      export PYTHON_BUILD_MIRROR_URL="https://npmmirror.com/mirrors/python/"
      pyenv install 3.10.4

      或者手动下载源码包放到缓存目录:

      mkdir -p ~/.pyenv/cache
      wget https://mirrors.tuna.tsinghua.edu.cn/python/3.10.4/Python-3.10.4.tar.xz -P ~/.pyenv/cache/
      pyenv install 3.10.4


      💡 为什么你之前的操作失败了?
      你的操作问题
      curl https://pyenv.run | bash 网络不通,DNS 解析失败 → 安装脚本没下载到
      手动写 export PYENV_ROOT=… 到 .bashrc 但 pyenv 二进制文件根本没装,所以 source 后依然报错
      尝试 source ./activate.fish 这是虚拟环境激活脚本,和 pyenv 无关,且你用的是 Bash/Zsh

      ✅ 现在按三步操作,你就能顺利装上 pyenv,并在 Kali 中自由切换多个 Python 版本了!

      如果还是报错:

      可能根本原因不是文件内容写错,而是你的终端当前运行的 Shell 不是 Bash,而是 Zsh。Kali Linux 自 2020 版本起已将默认 Shell 从 Bash 切换为 Zsh,而 shopt 是 Bash 独有的内置命令,Zsh 无法识别它,因此无论你如何重写 .bashrc,只要用 source ~/.bashrc 加载,都会报错。

      第一步:确认当前 Shell 类型

      在终端执行:

      echo $SHELL

      如果输出是 /bin/zsh,说明你正在使用 Zsh,而不是 Bash。这是问题的根源。

      第二步:将 pyenv 配置写入正确的配置文件

      既然你用的是 Zsh,就应该把配置写入 ~/.zshrc,而不是 ~/.bashrc。执行以下命令:

      # 1. 设置 pyenv 根目录
      echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc

      # 2. 将 pyenv 的 bin 目录加入 PATH
      echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc

      # 3. 初始化 pyenv (必须分两行)
      echo 'eval "$(pyenv init –path)"' >> ~/.zshrc
      echo 'eval "$(pyenv init -)"' >> ~/.zshrc

      第三步:重新加载 Zsh 配置并验证

      source ~/.zshrc
      pyenv –version

      如果能看到版本号,说明配置成功。


      💡 为什么之前一直失败?

      • 你一直在修改 .bashrc,但系统实际加载的是 .zshrc。
      • shopt 是 Bash 专属命令,Zsh 不认识它,所以报错。
      • 即使你把 .bashrc 写得再完美,只要用 source ~/.bashrc 在 Zsh 环境下执行,就会触发这个错误。

      📌 额外建议:如果你想切换回 Bash

      如果你更习惯使用 Bash,可以执行以下命令切换默认 Shell:

      chsh -s /bin/bash

      然后注销并重新登录,之后你就可以继续使用 .bashrc 了。

      二、使用 pyenv 管理 Python 版本

      查看可用版本

      pyenv install –list

      安装指定版本

      例如安装 Python 3.10.4:

      pyenv install 3.10.4

      切换版本
      • 全局切换(对所有终端生效):

        pyenv global 3.10.4

      • 项目级切换(仅在当前目录生效):

        cd /path/to/your/project
        pyenv local 3.8.12

        这会在当前目录生成一个 .python-version 文件,记录所需版本。

      • 临时会话切换(仅当前终端窗口生效):

        pyenv shell 3.9.7

      查看当前版本

      pyenv version # 查看当前激活的版本
      pyenv versions # 查看所有已安装的版本

      三、为什么推荐 pyenv?

      • 隔离性:每个版本独立安装,互不干扰。
      • 灵活性:支持全局、项目级、会话级三种切换模式。
      • 安全性:不修改系统 /usr/bin/python,避免破坏系统工具。
      • 易用性:命令简洁,自动化程度高。

      四、替代方案:虚拟环境 + 指定版本

      如果你不想安装 pyenv,也可以在创建虚拟环境时指定 Python 版本:

      python3.10 -m venv myenv_310
      source myenv_310/bin/activate

      这种方式适合你已经安装了多个 Python 版本的情况,但无法像 pyenv 那样方便地下载和管理新版本。

      赞(0)
      未经允许不得转载:网硕互联帮助中心 » 在kali中配置python环境与使用pyenv管理python版本
      分享到: 更多 (0)

      评论 抢沙发

      评论前必须登录!