Python中跨文件夹导入类求助:特定目录结构下导入失败
解决Python跨文件夹导入问题
针对你的项目结构,要在folder_2/main.py中导入folder_1/url.py里的URL类,你可以按以下方法处理:
方法一:从项目根目录运行脚本
打开终端,切换到root_folder目录,执行以下命令:
python -m folder_2.main
此时root_folder会被自动加入Python的模块搜索路径,你可以直接在folder_2/main.py中使用:
from folder_1.url import URL # 实例化URL对象 url_instance = URL()
方法二:手动添加项目根路径到搜索列表
如果需要直接运行folder_2/main.py(比如在IDE中直接启动),可以在folder_2/main.py开头添加代码,把root_folder的绝对路径加入Python的搜索路径:
import sys from pathlib import Path # 获取项目根目录的绝对路径 root_dir = Path(__file__).parent.parent sys.path.append(str(root_dir)) # 正常导入URL类 from folder_1.url import URL url_instance = URL()
为什么之前的导入方式失败
from .folder_1.url import URL:单.代表当前脚本所在的包(即folder_2),但folder_2下没有folder_1子目录,无法匹配到目标模块。from ..folder_1.url import URL:双.代表父包,但直接运行folder_2/main.py时,它被当作顶层脚本而非包的一部分,Python禁止顶层脚本使用相对导入,因此报错。
内容的提问来源于stack exchange,提问作者BRU
相关产品推荐
相关产品推荐

