/mnt/c 不支持 linux 文件权限、符号链接和 inotify,导致 pip install 创建的软链损坏、venv 权限错乱、__pycache__ 生成失败及 vs code 索引失效;正确做法是代码放 windows(如 /mnt/d),环境必须建在 wsl2 原生路径(如 ~/projects/myapp-env)并手动指定解释器路径。

不能直接共享 Python 环境,只能共享代码文件;环境必须各自独立安装和管理。
为什么 pip install 到 /mnt/c 会失败或行为异常
WSL2 把 Windows 盘符挂载为 /mnt/c,但这是通过 9P 协议桥接的虚拟文件系统,不支持 Linux 的硬链接、符号链接、inotify 事件和部分权限位。Python 包管理器(pip、conda)在安装时依赖这些特性:
-
pip install创建的.dist-info目录和site-packages中的软链会损坏或丢失 -
venv初始化时写入的pyvenv.cfg和激活脚本可能权限错乱 -
import时触发的__pycache__生成失败,导致模块反复重编译 - VS Code 的 Python 扩展无法正确索引
/mnt/c下的包,调试断点失效
正确做法:代码放 Windows,环境放 WSL2 原生路径
把项目源码放在 Windows(如 D:\projects\myapp),然后在 WSL2 中用 ln -s 或直接访问 /mnt/d/projects/myapp 编辑/运行——但所有环境操作必须在 WSL2 原生路径中完成:
安全 Python 代码沙箱:在隔离的沙箱中执行任意 Python 代码,预装 requests、NumPy、pandas 库。返回 stdout、stderr。
- 创建虚拟环境:在
~/projects/myapp-env(不是/mnt/d/...)执行python -m venv ~/projects/myapp-env - 安装依赖:先
source ~/projects/myapp-env/bin/activate,再pip install -r /mnt/d/projects/myapp/requirements.txt - 运行代码:仍可从 WSL2 终端执行
python /mnt/d/projects/myapp/main.py,它会自动使用当前激活的venv - Git 操作也必须在 WSL2 内执行(如
cd /mnt/d/projects/myapp && git status),否则换行符和权限位会混乱
VS Code 连接 WSL2 时如何选对 Python 解释器
Remote-WSL 插件默认只识别 /usr/bin/python* 和 ~/.pyenv,不会自动发现你建在 ~/projects/ 下的 venv。必须手动指定:
- 打开命令面板(
Ctrl+Shift+P),输入Python: Select Interpreter - 选择
Enter interpreter path... - 填入完整路径,例如:
/home/username/projects/myapp-env/bin/python - 确认后,底部状态栏应显示类似
Python 3.11.9 ('myapp-env': venv) - 切忌用 Windows 路径(如
C:\Users\...\myapp-env\Scripts\python.exe)——那是 Windows Python,无法在 WSL2 中运行
真正容易被忽略的是:哪怕你只是用 VS Code 编辑 /mnt/d 下的代码,只要想调试或运行,就必须确保解释器路径指向 WSL2 内的 venv,且该 venv 从未在 /mnt/ 下创建过。跨文件系统建环境,等于给后续所有环节埋雷。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










