Python自动化脚本ModuleNotFoundError:自定义模块导入失败求助
针对你遇到的ModuleNotFoundError,按以下步骤逐一排查:
1. 修正包标识文件的名称
你的O文件夹里的init.py必须重命名为__init__.py(前后各两个下划线),这是Python识别文件夹为可导入包的必要条件。没有这个文件,Python会把O当成普通文件夹,而非可导入模块。
2. 检查执行脚本的工作目录
确保你是在项目根目录下运行test_check_leads.py,而非在testCases文件夹内直接运行。
- 比如你的项目根路径是
C:\Users\Public\CheckLeads,就先切换到这个目录,再执行:python testCases/test_check_leads.py
如果必须在testCases内运行,可在脚本开头添加代码,手动将根目录加入Python的搜索路径:
import sys import os # 获取项目根目录(当前脚本所在文件夹的上层目录) root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(root_path)
3. 核对导入语句的一致性
注意报错信息里显示的是from T.objects import Boost_Media,但你说现在用的是from O.objects import Boost_media,这里有两处不匹配:
- 模块名:
TvsO——确认虚拟机里的test_check_leads.py确实已经更新为新的导入语句,没有残留旧代码。 - 类名大小写:
Boost_MediavsBoost_media——Python是大小写敏感的,确保导入的类名和objects.py里的类名完全一致(你的objects.py里是Boost_media,导入时要小写m)。
4. 验证PYTHONPATH配置是否生效
在虚拟机里执行以下命令,确认项目根目录已经被添加到PYTHONPATH:
- Linux/macOS:
echo $PYTHONPATH - Windows:
echo %PYTHONPATH%
如果没看到根路径,重新配置:
- Linux/macOS(临时生效,重启终端后需要重新配置):
export PYTHONPATH=/path/to/your/root_path:$PYTHONPATH - Windows(临时生效):
set PYTHONPATH=C:\path\to\your\root_path;%PYTHONPATH%
要让配置永久生效,可将上述命令添加到终端的配置文件(比如Linux的~/.bashrc,Windows的系统环境变量)。
5. 检查文件名/路径的大小写(针对Linux虚拟机)
如果Paperspace虚拟机是Linux系统,文件名和路径是大小写敏感的。而Windows是不敏感的,比如你本地的O文件夹在虚拟机里如果被命名为o,就会导致导入失败。确认虚拟机里的文件夹名是O(大写),文件名objects.py拼写完全正确。
6. 清除Python缓存文件
Python会生成.pyc编译文件和__pycache__文件夹缓存模块信息,旧缓存可能导致导入异常。删除项目根目录下所有的__pycache__文件夹和.pyc文件,然后重新运行脚本。
内容的提问来源于stack exchange,提问作者Georgian Costea

