你知唔知我系靓仔

python虚拟环境

虚拟环境管理批处理脚本 (README)

简介

这个批处理脚本 (activate_venv.bat) 用于管理和激活 Python 虚拟环境。它能够自动检测当前目录及其子目录中的虚拟环境,并根据虚拟环境的数量决定是直接激活还是提示用户选择。

功能

  1. 自动检测虚拟环境

    • 脚本会遍历当前目录及其子目录,查找包含 Scripts\activate.bat 文件的目录,这些目录被认为是 Python 虚拟环境。
  2. 自动激活单个虚拟环境

    • 如果只找到一个虚拟环境,脚本会自动激活该环境,并在新的命令行窗口中启动。
  3. 选择激活多个虚拟环境

    • 如果找到多个虚拟环境,脚本会列出所有虚拟环境,并提示用户选择要激活的环境编号。
  4. 创建新的虚拟环境

    • 如果未找到任何虚拟环境,脚本会提示用户是否创建新的虚拟环境。如果用户选择创建,脚本会要求输入新虚拟环境的名称,并自动创建和激活该环境。

使用方法

  1. 运行脚本

    • 双击 activate_venv.bat 文件或在命令行中运行 activate_venv.bat
  2. 自动激活

    • 如果当前目录及其子目录中只有一个虚拟环境,脚本会自动激活该环境,并在新的命令行窗口中启动。
  3. 选择激活

    • 如果存在多个虚拟环境,脚本会列出所有虚拟环境,并提示用户输入要激活的环境编号。
  4. 创建新环境

    • 如果未找到任何虚拟环境,脚本会提示用户是否创建新的虚拟环境。输入 Y 并按提示输入新环境名称即可创建并激活新环境。

注意事项

  • 脚本会自动检测当前目录及其子目录中的虚拟环境,因此请确保在包含虚拟环境的目录中运行脚本。
@echo off
setlocal enabledelayedexpansion

:: 初始化虚拟环境路径和环境列表
set VENV_PATH=
set VENV_LIST=

:: 遍历子目录查找虚拟环境
for /r %%d in (.) do (
    if exist "%%d\Scripts\activate.bat" (
        set "VENV_LIST=!VENV_LIST!%%d;"
    )
)

:: 检查找到的虚拟环境
if defined VENV_LIST (
    set count=0
    for %%v in (!VENV_LIST!) do (
        set /a count+=1
    )

    if !count! == 1 (
        :: 只有一个虚拟环境,直接激活
        for %%v in (!VENV_LIST!) do (
            set "VENV_PATH=%%v"
        )
        echo 正在激活虚拟环境: !VENV_PATH!
        start cmd /k "!VENV_PATH!\Scripts\activate.bat"
        echo 虚拟环境已激活,请在新窗口中使用。
    ) else (
        :: 多个虚拟环境,提示用户选择
        echo 找到以下虚拟环境:
        set count=0
        for %%v in (!VENV_LIST!) do (
            set /a count+=1
            echo !count! - %%v
        )

        set /p choice=请选择要激活的虚拟环境编号: 
        set idx=0
        for %%v in (!VENV_LIST!) do (
            set /a idx+=1
            if !idx! == !choice! (
                set "VENV_PATH=%%v"
            )
        )

        if defined VENV_PATH (
            echo 正在激活虚拟环境: !VENV_PATH!
            start cmd /k "!VENV_PATH!\Scripts\activate.bat"
            echo 虚拟环境已激活,请在新窗口中使用。
        ) else (
            echo 无效的选择,未激活任何虚拟环境。
        )
    )
) else (
    echo 未找到虚拟环境,是否创建新的虚拟环境?[Y/N]
    set /p choice=
    if /i "%choice%"=="Y" (
        set /p VENV_NAME=请输入新的虚拟环境名称: 
        set "VENV_PATH=.\%VENV_NAME%"
        echo 正在创建虚拟环境 %VENV_NAME% ...
        python -m venv "%VENV_PATH%"
        echo 虚拟环境 %VENV_NAME% 创建完成。
        start cmd /k "!VENV_PATH!\Scripts\activate.bat"
        echo 虚拟环境 %VENV_NAME% 已激活,请在新窗口中使用。
    ) else (
        echo 未创建虚拟环境,退出。
        exit /b
    )
)