You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:57:47