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

Python 3.9如何导入名称带'-'字符的文件夹模块

问题根因

Python原生import语法要求包名、模块名必须为合法Python标识符,-属于减号运算符,无法被解析为模块路径的组成部分,直接写from folder-utils.utils_b import xxx会直接抛出语法或模块找不到错误。
将导入语句中的-替换为_无法生效,原因是磁盘上实际存在的目录名仍为folder-utils,Python按模块名查找目录时只会匹配名称完全一致的文件夹,自然找不到名称为folder_utils的对应路径。

解决方案

方案1(优先选择,无额外兼容成本)

直接把磁盘上的folder-utils文件夹重命名为folder_utils,之后使用常规导入语句即可正常运行:

from folder.utils_a import hello_world_from_a
from folder_utils.utils_b import hello_world_from_b

该方案完全符合Python包命名规范,不会引入路径冲突、跨环境导入失效等问题,长期维护成本最低。

方案2(无法修改原目录名时使用,纯原生实现)

如果受项目规范、外部依赖限制不能修改原文件夹名,可以通过Python内置标准库sys修改模块搜索路径实现导入,不需要使用importlib,也不依赖任何第三方包:

import sys
# 把folder-utils目录加入Python模块搜索路径
sys.path.append("./folder-utils")

# 导入正常命名的模块
from folder.utils_a import hello_world_from_a
# 直接导入搜索路径下的utils_b模块
from utils_b import hello_world_from_b

提示:如果执行脚本时的工作目录不是main.py所在目录,请把./folder-utils替换为folder-utils目录的绝对路径,避免相对路径匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:36:17