为何Python程序在PowerShell可运行,WSL的Bash中却找不到文件?
问题原因解析:PowerShell与WSL Bash中Python程序的差异
一、文件找不到的核心原因
- WSL是运行在Windows上的Linux兼容层,它采用Linux文件系统路径规则,不直接识别Windows的盘符路径格式。
- Windows的C盘在WSL中会被挂载到
/mnt/c/目录下,你代码里的C:/Users/me/Desktop/data.txt在WSL环境中对应的正确路径应为/mnt/c/Users/me/Desktop/data.txt。 - 当你在WSL中使用Windows格式的路径时,Python解释器会将
C:/视为一个不存在的Linux目录,因此抛出FileNotFoundError。
二、python与python3命令差异的原因
- Windows环境中,Python安装程序默认将可执行文件命名为
python.exe,因此在PowerShell中输入python即可调用Python解释器。 - 在Linux(包括WSL的Bash)生态中,历史上
python命令默认指向Python 2.x版本,python3指向Python 3.x版本。如今多数发行版已不再预装Python 2,所以必须用python3明确调用Python 3解释器。 - 若想在WSL中统一使用
python命令,可通过创建软链接实现:sudo ln -s /usr/bin/python3 /usr/bin/python
兼容两种环境的代码示例
如果需要让程序同时在PowerShell和WSL中运行,可以通过判断环境动态切换路径:
import os # 检测WSL环境(判断/mnt/c是否存在) if os.path.exists('/mnt/c'): file_path = '/mnt/c/Users/me/Desktop/data.txt' else: file_path = 'C:/Users/me/Desktop/data.txt' with open(file_path) as a: content = a.read() print(content)
内容的提问来源于stack exchange,提问作者Redtunic
相关产品推荐
相关产品推荐

