> 技术文档 > python | vscode | cursor | 使用uv快速创建虚拟环境(实现一个项目一个虚拟环境,方便环境管理)_vscode uv

python | vscode | cursor | 使用uv快速创建虚拟环境(实现一个项目一个虚拟环境,方便环境管理)_vscode uv

从笨重的pycharm转到vscode/cursor。

vscode是编辑器,虽然可以安装各种extension,还是需要安装python解释器。

安装python,实现基本代码运行:

  1. 去python官网下载python的windows安装包(python解释器)
    • 安装时记得选择customized,安装非C盘中(比如D盘)
    • 将python添加到PATH中:把刚刚安装python的路径添加到系统环境变量中(2个):D:\\Program Files\\Python314D:\\Program Files\\Python314\\Scripts\\(添加到变量名为Path中)
  2. 在cursor中运行代码时,系统会自动匹配extension帮助找到python解释器(使用cursor编辑器)
  3. cmd中输入python --version显示python版本,说明安装成功。

安装pip

情况:安装的时候出现Scripts现文件夹为空的情况(存放的是pip.exe启动器,才能使用pip命令)。通常来说执行python -m ensurepip会安装pip核心代码在Lib中,然后在Scripts中安装pip启动器,该启动器调用python -m pip,所以也可以通过python -m命令,不依赖PATH进行安装:python -m pip install uv

因此,强制安装pip.exe启动器:python -m pip install --force-reinstall pip,通过卸载pip再安装pip实现,于是scripts中可以看见pip.exe,重新打开cmd输入pip --version,可以正常显示了。

uv实现在相应的项目中安装虚拟环境(一个项目一个虚拟环境)

进入项目文件夹,运行uv venv,会生成虚拟环境(virtual environment):
D:\\project
├── .venv\\(存放虚拟环境)
├── main.py(项目代码)
运行.venv\\Scripts\\activate激活该虚拟环境。
deactivate退出该虚拟环境。

由于激活虚拟环境的代码麻烦,可以在项目目录下新建activate.bat文件,内容为:

@echo offcall .venv\\Scripts\\activate

后续在项目目录下cmd输入activate实现激活该虚拟环境,deactivate退出该虚拟环境。

==================================== 更新 ====================================

更新

情况:虚拟环境创建并激活后,使用pip安装的包出现在了全局D:\\Program Files\\Python314\\Libsite-packages中,而不是当前项目的\\.venv\\Lib\\site-packages中,导致还是得使用全局python环境才能使用新安装的包。

原因:这是由于尽管激活了虚拟环境,但是使用的还是全局的pip,而虚拟环境的\\.venv\\Scripts中没有pip.exe
使用where python可以查看当前使用的python环境是全局的还是虚拟环境的。
使用where pip可以查看当前使用的pip是全局的还是虚拟环境的。

解决:激活虚拟环境后,在虚拟环境中安装pippython -m ensurepip --upgrade,此时在.venv\\Scripts中有pip3.exe,可以通过pip3正常使用了,如果习惯用pip的,可以通过 将pip3.exe复制为pip.exe即可(也可以手动复制)。

因此创建新的activate.bat文件,双击即可实现:

  • 创建虚拟环境
  • 激活该环境
  • 输出 python 路径
  • 检查是否有 pip.exe,没有就装
  • 若还没有 pip.exe,用 pip3.exe 复制一份
  • 输出 pip 路径和版本
  • double check是便于查看:
    • 当前 Python 路径
    • 当前 pip 路径与版本

内容为:

@echo offset CREATED=0:: Step 1: Check and create virtual environmentif exist \".venv\\Scripts\\python.exe\" ( set CREATED=0) else ( uv venv .venv set CREATED=1):: Step 2: Activatecall .venv\\Scripts\\activateecho.:: Now echo Step 1 and 2 results after activationecho === Step 1: Virtual environment status ===if %CREATED%==1 ( echo Created new virtual environment.) else ( echo Virtual environment already exists.)echo.echo === Step 2: Virtual environment activated ===echo.:: Step 3: Show Python pathecho === Step 3: Current Python path ===where pythonecho.:: Step 4: Check pip.exeecho === Step 4: Checking pip.exe ===if exist \".venv\\Scripts\\pip.exe\" ( echo pip.exe already exists.) else ( echo pip.exe not found. Installing with ensurepip... python -m ensurepip --upgrade)echo.:: Step 5: Copy pip3.exe if neededecho === Step 5: Check again, copy pip3.exe if needed ===if not exist \".venv\\Scripts\\pip.exe\" ( if exist \".venv\\Scripts\\pip3.exe\" ( echo Copying pip3.exe to pip.exe... copy /Y \".venv\\Scripts\\pip3.exe\" \".venv\\Scripts\\pip.exe\" >nul ) else ( echo pip3.exe not found. Cannot create pip.exe. )) else ( echo pip.exe confirmed present.)echo.:: Step 6: Show pip infoecho === Step 6: pip path and version ===where pippip --versionecho.echo == Double Check ==echo 1. Current Python path:for /f \"delims=\" %%i in (\'where python\') do ( echo %%i goto :done1):done1echo.echo 2. Checking pip.exe:if exist \".venv\\Scripts\\pip.exe\" ( echo pip.exe exists) else ( echo pip.exe not found)echo.echo 3. pip path:for /f \"delims=\" %%i in (\'where pip\') do ( echo %%i goto :done2):done2echo.cmd /k

cmd /k是停留在当前页面,便于后续操作。