十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

在kali中配置python环境与使用pyenv管理python版本 标准做法在 Kali 中配置 Python最核心的原则是千万不要随意修改或卸载系统自带的 Python。因为 Kali 默认预装的 Python 与系统底层的安全工具深度绑定乱动会导致系统功能异常。为了安全、高效地开发我为你整理了以下标准配置流程第一步确认与更新系统 PythonKali 通常已经预装了 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创建虚拟环境假设命名为 myenvpython3 -m venv myenv激活虚拟环境source myenv/bin/activate激活成功后你的终端提示符前面会出现(myenv)字样。第三步编写与运行代码在虚拟环境激活的状态下你可以使用任何你喜欢的编辑器如 VS Code、Vim 或 Nano来写代码。创建一个简单的测试脚本nano test.py输入以下代码并保存退出print(Hello, Kali Python!)运行脚本python3 test.py看到输出结果说明你的 Python 基础运行环境完全正常第四步安装第三方库在虚拟环境中你可以放心地使用pip安装各种安全测试或开发库例如网络数据包处理库 Scapypip 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 ~/桌面/你的项目文件夹创建虚拟环境命名为 venvpython3 -m venv venv激活它source venv/bin/activate(此时你会看到提示符变成(venv) kalikali:...)开始干活现在你可以放心地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或~/.zshrcecho 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 默认是~/.bashrcecho 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_URLhttps://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可以执行以下命令切换默认 Shellchsh -s /bin/bash然后注销并重新登录之后你就可以继续使用.bashrc了。二、使用 pyenv 管理 Python 版本查看可用版本pyenv install --list安装指定版本例如安装 Python 3.10.4pyenv 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 那样方便地下载和管理新版本。
返回列表