python | vscode | cursor | 使用uv快速创建虚拟环境(实现一个项目一个虚拟环境,方便环境管理)_vscode uv
从笨重的pycharm转到vscode/cursor。
vscode是编辑器,虽然可以安装各种extension,还是需要安装python解释器。
安装python,实现基本代码运行:
- 去python官网下载python的windows安装包(python解释器)
- 安装时记得选择customized,安装非C盘中(比如D盘)
- 将python添加到PATH中:把刚刚安装python的路径添加到系统环境变量中(2个):
D:\\Program Files\\Python314
和D:\\Program Files\\Python314\\Scripts\\
(添加到变量名为Path中)
- 在cursor中运行代码时,系统会自动匹配extension帮助找到python解释器(使用cursor编辑器)
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
是全局的还是虚拟环境的。
解决:激活虚拟环境后,在虚拟环境中安装pip
:python -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
是停留在当前页面,便于后续操作。