Windows正常运行但WSL2 Ubuntu中已pip安装pathlib仍提示‘No module named pathlib’的问题求助
问题分析与解决方案
核心原因
- 不必要的依赖安装:
pathlib是Python 3.4及以上版本的标准库,完全不需要在requirements.txt中手动安装。你安装的pathlib 1.0.1是针对Python 2.x的第三方兼容版本,和Python 3自带的pathlib不是一回事。 - Python版本混淆:WSL2 Ubuntu默认情况下,
python命令指向Python 2.7,而pip可能对应Python 3的包管理器。你用pip把第三方pathlib装到了Python 3的环境里,但用python snek.py调用的是Python 2,自然会出现ImportError。 - 代码逻辑错误:你的
runsnek.py里有个无效的elif ''分支,导致Linux环境直接走到else块,执行了错误的Python版本命令。
修复步骤
1. 修正requirements.txt
直接移除pathlib条目,因为Python 3自带这个库:
# pip reqs # 移除pathlib,Python3.4+已内置该标准库
2. 修正runsnek.py代码
明确指定使用python3和pip3,避免版本混淆,同时修复无效的分支判断:
import os, platform # 用pip3确保安装到Python3环境 os.system('pip3 install --upgrade -r requirements.txt') if platform.system() == 'Windows': os.system('py snek.py') elif platform.system() == 'Linux': # 明确调用Python3运行脚本 os.system('python3 snek.py') else: raise Warning('snek could not be ran, try running snek.py instead')
3. 验证WSL中的Python版本(可选)
运行以下命令确认版本:
python --version # 大概率输出Python 2.7.x python3 --version # 应该是Python 3.x(比如你的3.8)
为什么Windows能正常运行?
Windows的py命令默认调用Python 3,pip也对应Python 3环境,而且Python 3会优先使用自带的标准库pathlib,即使你安装了第三方版本也不会影响,所以没出问题。
内容的提问来源于stack exchange,提问作者user17747971
相关产品推荐
相关产品推荐

