标准做法
在 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 那样方便地下载和管理新版本。
网硕互联帮助中心





评论前必须登录!
注册