运行Python3.8脚本Test2.py报错No module named PageObjects,加__init__.py仍未解决
问题描述
执行命令 python3.8 Test2.py 时出现报错:
No module named PageObjects
已在项目各文件夹中创建 __init__.py 文件,但问题仍未解决。
附Test2.py代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager from PageObjects.LoginPage import LoginPage from Resources.TestData import TestData as td import unittest import HTMLTestRunner opt = Options() opt.add_argument("--disable-infobars") opt.add_argument("start-maximized") opt.add_argument("--disable-extensions") # Pass the argument 1 to allow and 2 to block opt.add_experimental_option("prefs", { \ "profile.default_content_setting_values.media_stream_mic": 1, "profile.default_content_setting_values.media_stream_camera": 1, "profile.default_content_setting_values.geolocation": 1, "profile.default_content_setting_values.notifications": 1 }) class UpdatePersonalInfo(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()), options=opt) def test_update_firstName_lastname_jobtitle(self): if __name__ == '__main__': unittest.main(testRunner=HTMLTestRunner.HTMLTestRunner(output='..\\Reports'))
解决方法
1. 确认项目目录结构
先确保项目目录结构符合Python包的规范,示例如下:
项目根目录/ ├── PageObjects/ │ ├── __init__.py │ └── LoginPage.py ├── Resources/ │ ├── __init__.py │ └── TestData.py └── Test2.py
如果Test2.py不在项目根目录,而是在子文件夹中,导入路径需要对应调整。
2. 手动添加项目根目录到Python搜索路径
Python找不到模块的核心原因是模块所在目录不在其搜索路径中。在Test2.py开头添加以下代码,强制将项目根目录加入搜索路径:
import sys import os # 获取当前文件的绝对路径 current_file_path = os.path.abspath(__file__) # 获取项目根目录(若Test2.py在根目录,直接用current_file_path的父目录即可) project_root = os.path.dirname(current_file_path) # 将根目录插入到搜索路径最前面 sys.path.insert(0, project_root)
3. 使用相对导入(适用于Test2.py在子目录的场景)
如果Test2.py位于项目根目录的子文件夹(如Tests/Test2.py),可以改用相对导入语法:
from ..PageObjects.LoginPage import LoginPage from ..Resources.TestData import TestData as td
注意这种方式需要以包的形式运行脚本,执行命令改为 python -m Tests.Test2,而非直接运行Test2.py文件。
4. 检查__init__.py文件有效性
确保PageObjects和Resources文件夹内的__init__.py是合法的空文件或无错误代码的文件,无需额外内容,只要存在就能标识该文件夹为Python包。
5. 核对文件名与类名拼写
确认LoginPage.py文件名、文件内的LoginPage类名拼写完全正确,Linux/macOS系统下需注意大小写一致性。
内容的提问来源于stack exchange,提问作者nstack
相关产品推荐
相关产品推荐

