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

Python:子文件夹脚本读取模块相对路径文件的问题

问题分析

问题根源在于read.py里用了相对当前工作目录的路径./lib/data.pk——这个路径的参照是执行脚本时的工作目录,而不是read.py自身所在的目录。当从script/inner.py执行时,工作目录是script/,程序会去寻找script/lib/data.pk,自然找不到实际存放在module/lib/里的文件。

解决方案

修改read.py,让文件路径基于自身所在位置构建绝对路径,彻底摆脱工作目录的影响:

import os
import pickle

# 获取read.py所在目录的绝对路径
module_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接出data.pk的完整绝对路径
data_file_path = os.path.join(module_dir, "lib", "data.pk")

with open(data_file_path, "rb") as f:
    data = pickle.load(f)
关键逻辑说明
  • os.path.abspath(__file__):拿到read.py文件本身的绝对路径,比如/xxx/root/module/read.py
  • os.path.dirname(...):从上面的路径中提取出所在目录,也就是/xxx/root/module/
  • os.path.join(...):安全拼接目录和子路径,生成/xxx/root/module/lib/data.pk,跨Windows、Linux等系统都能正常工作

修改后,不管是从outer.py还是inner.py导入module.read,都能精准定位到目标文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 13:33:16