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

Python能否以嵌套路径格式从子目录导入类?以Selenium为例

问题解答:Python子目录导入类的语法问题

不行,你尝试的from selenium.webdriver.support import ui.WebDriverWait这种语法在Python里是不合法的,会直接抛出SyntaxError,核心原因是Python导入语法有明确规则:

  • from <包/模块> import <名称> 里的<名称>必须是该包/模块直接包含的对象:要么是子模块(对应包的子目录,需存在__init__.py标识为包),要么是模块内定义的类、函数、变量。
  • ui.WebDriverWait是selenium.webdriver.support.ui子模块下wait.py文件里的类,并不是selenium.webdriver.support直接包含的成员,所以不能用点链跨层级直接引用。

针对你提到的Selenium场景,给你几种合法的导入方式:

方式1:直接从最终模块导入目标类和模块

这是最清晰的写法,直接定位到类所在的具体模块:

from selenium.webdriver.support.ui.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

方式2:先导入子模块,再访问类

如果需要用到ui子模块下的其他内容,可以先导入子模块,再通过子模块访问类:

from selenium.webdriver.support import ui, expected_conditions as EC
# 使用时写 ui.wait.WebDriverWait

方式3:多行分组导入(精简语句行数)

如果想减少导入语句的行数,可以用括号把同层级的导入内容分组,多行书写:

from selenium.webdriver.support import (
    expected_conditions as EC,
    ui
)
from selenium.webdriver.support.ui.wait import WebDriverWait

总结来说,Python不支持跨模块层级的点式导入,必须逐层明确模块关系,或者直接从最终模块导入目标对象。

内容的提问来源于stack exchange,提问作者The Amateur Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:23:18