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

Python 3从兄弟目录导入模块报错:ModuleNotFoundError: No module named 'Pages'

解决ModuleNotFoundError: No module named 'Pages'问题

项目目录结构

.
├── Pages
│   ├── __init__.py
│   ├── homepage.py
│   └── locators.py
└── TestCases
    ├── __init__.py
    └── sign_in.py

相关代码

sign_in.py

import time
from selenium import webdriver
from Pages.homepage import Homepage

# Test Sign In
class sign_in():
    def setup(self):
        self.driver = webdriver.Chrome()
        
    def test_sign_in(self):
        driver = self.driver
        driver.get('https://google.com')
        driver.set_page_load_timeout(20)
        h = Homepage(driver)
        h.signin().click()
        time.sleep(50)

homepage.py

from locators import Locator
from selenium.webdriver.common.by import By


class Homepage(object):
    def __init__(self,driver):
        self.driver = driver
    
        self.signin = driver.find.element(By.XPATH, Locator.sign_in)

运行错误

ModuleNotFoundError: No module named 'Pages'

已尝试在sign_in.py中添加sys.path.append("..")但无效,希望通过重构目录而非临时办法解决问题。

解决方案

方案1:将根目录设为Python包

  1. 在包含Pages和TestCases的项目根目录下创建空的__init__.py文件,标记该目录为Python可导入包。
  2. 修改导入语句:
    • sign_in.py中改为相对导入:from ..Pages.homepage import Homepage
    • homepage.py中改为相对导入:from .locators import Locator
  3. 从根目录的上级目录执行测试命令:python -m <根目录名称>.TestCases.sign_in,例如根目录名为selenium_test,则运行python -m selenium_test.TestCases.sign_in

方案2:重构为标准测试项目结构

调整为更规范的布局,彻底解决导入问题:

test_project/
├── src/
│   ├── __init__.py
│   └── Pages/
│       ├── __init__.py
│       ├── homepage.py
│       └── locators.py
├── tests/
│   ├── __init__.py
│   └── sign_in.py
└── setup.py
  1. 创建setup.py文件,内容示例:
    from setuptools import setup, find_packages
    
    setup(
        name="test_project",
        version="0.1",
        packages=find_packages(where="src"),
        package_dir={"": "src"},
    )
    
  2. 在项目根目录执行命令,将项目安装为可编辑模式:pip install -e .
  3. 此时sign_in.py可保持from Pages.homepage import Homepage的导入方式,homepage.py用from .locators import Locator,任意目录下都能正常运行测试。

额外修正点

  • homepage.py存在语法错误:driver.find.element需改为driver.find_element(删除中间的点),否则导入问题解决后仍会触发运行错误。
  • 确保所有__init__.py文件存在,空文件即可,它们是Python识别包的必要标志。

内容的提问来源于stack exchange,提问作者Matt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:10:01