如何在Windows的VS Code中通过WSL(Ubuntu)激活pipenv虚拟环境
问题根源与解决方案
你遇到的核心问题其实是Windows系统创建的pipenv虚拟环境无法在WSL Ubuntu中直接使用——因为Windows的虚拟环境里的Python解释器、激活脚本都是Windows专属格式(比如.exe可执行文件、Windows批处理脚本),而WSL是Linux环境,根本没法运行这些Windows程序,这和PATH配置、VS Code选择解释器的操作无关。
下面一步步帮你解决:
1. 在WSL Ubuntu中重新创建适配Linux的pipenv虚拟环境
首先要抛弃Windows里的虚拟环境,在WSL里从头搭建适合Linux的开发环境:
- 打开VS Code的WSL终端,进入你的项目目录(注意用WSL的路径格式,空格要加转义符):
cd /mnt/c/Users/this_user/OneDrive\ -\ CUT/Learning/Python/Corey\ Schafer\ -\ Django\ Framework - 先安装WSL所需的基础依赖:
# 更新Ubuntu软件源 sudo apt update # 安装Python3.7及开发工具 sudo apt install python3.7 python3.7-dev python3-pip # 安装pipenv(用户级安装,无需sudo) pip3 install --user pipenv - 创建适配WSL的pipenv虚拟环境(指定Python3.7版本,和你Windows端版本一致):
pipenv --python 3.7 - 激活虚拟环境并验证是否生效:
pipenv shell # 检查Python路径,应该指向WSL本地的虚拟环境目录 which python # 输出示例:/home/this_user_name/.local/share/virtualenvs/Corey_Schafer_-_Django_Framework-<随机哈希>/bin/python
2. 配置VS Code(WSL远程模式)识别虚拟环境
你之前是在Windows的VS Code里操作,正确的做法是用VS Code的Remote-WSL扩展连接到WSL环境:
- 打开VS Code,点击左下角的><图标(远程连接按钮),选择
New WSL Window using Distro...,选择你的Ubuntu发行版 - 在新打开的WSL窗口中,打开你的项目目录
- 按
Ctrl+Shift+P打开命令面板,输入Python: Select Interpreter,此时就能看到WSL里刚创建的pipenv虚拟环境的Python选项(格式类似Python 3.7.4 ('Corey Schafer - Django Framework': pipenv)),选择它即可 - 此时VS Code会自动更新工作区的
settings.json,无需手动修改Windows端的配置文件
3. 清理无效的PATH配置
把WSL中.profile里添加的Windows虚拟环境路径删掉,这些路径对Linux环境完全没用,还会导致PATH混乱:
- 打开
.profile文件:nano ~/.profile - 删除最后两行无效配置:
#Adding path to virtual enviroments PATH="/mnt/c/Users/this_user/.virtualenvs:$PATH" export PATH - 按
Ctrl+O保存,Ctrl+X退出,然后执行source ~/.profile使修改生效
为什么之前的操作没用?
- 你手动执行的
source <Windows激活文件路径>:Windows虚拟环境的activate是.bat批处理脚本,WSL的bash没法解析,所以根本没激活成功 - VS Code里看不到虚拟环境选项:因为你是在Windows的VS Code里,它只能识别Windows的虚拟环境,而你需要的是WSL里的Linux虚拟环境,必须用Remote-WSL模式才能识别
- PATH里添加Windows路径:WSL优先查找Linux可执行文件,所以即使加了Windows的Scripts路径,bash也不会去执行里面的Windows
.exe文件
内容的提问来源于stack exchange,提问作者learner254




