linux文件系统大小写敏感导致import失败:windows下import mymodule能成功,而linux报modulenotfounderror,根本原因是ext4等默认大小写敏感,utils.py与utils.py被视为不同文件,须严格核对ls -la显示的真实文件名、__init__.py命名及git的core.ignorecase配置。

Linux文件系统大小写敏感导致import失败
Windows下import mymodule能成功加载mymodule.py,而Linux报ModuleNotFoundError,大概率不是拼写错了,是文件名实际为MyModule.py或mymodule.py但被误认为同一文件——Linux的ext4默认大小写敏感,两个名字就是两个不同文件。
- 用
ls -la确认真实文件名:大小写字母一个都不能错,比如Utils.py≠utils.py - 检查
__init__.py是否存在且命名正确:哪怕只是空文件,也必须是小写__init__.py,不能是__INIT__.py或init.py - IDE自动生成的包结构常埋雷:PyCharm在Windows创建
src/MyPackage/后同步到Linux,若目录名含大写,from src.MyPackage import xxx会直接失败
import路径里混用大小写引发隐性错误
即使模块能导入,大小写不一致也可能破坏相对导入或包内引用。比如from .config import settings在myapp/config.py中正常,但若实际路径是myapp/Config.py,Linux下settings变量可能根本没定义——因为Python加载的是另一个同名但内容为空的Config.py。
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
- 运行
python -c "import pkgutil; print(list(pkgutil.iter_modules(['.']))"查看当前目录下被识别为包的子目录名,核对大小写 - 用
python -v -c "import your_module"加-v参数观察Python实际打开的文件路径,确认是不是你预期的那个 - 避免在
sys.path里硬编码路径:比如sys.path.insert(0, 'Src')在Linux下找不到src/目录,应统一用pathlib.Path(__file__).parent / 'src'
Git仓库里大小写变更不被Windows感知
你在Linux上把helper.py重命名为Helper.py,git commit后推送到远程,Windows用户git pull却看不到变化——因为NTFS不区分大小写,Git认为“没改”,下次Linux用户拉取时可能加载到旧版本的helper.py,造成行为漂移。
- 在Linux上执行
git config core.ignorecase false,强制Git追踪大小写变化 - 重命名前先删原文件:
git rm helper.py && git add Helper.py,避免Git缓存混淆 - CI流程中加入检查:用
find . -name "*.py" | grep "[A-Z]"扫描命名不规范的文件,提前拦截
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










