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

如何获取Python导入模块自身所在目录而非入口文件所在目录

解决方案

直接在Y/bar.py中使用如下代码即可获取自身所在的Y目录路径:

import pathlib
import sys

# 读取当前模块的真实文件路径,解析父目录
current_file = pathlib.Path(sys.modules[__name__].__file__)
bar_parent_dir = current_file.parent.resolve(strict=True)

原代码返回X目录的原因

你原先的写法理论上应当返回Y目录,出现异常结果通常是以下两种场景:

  • 你在foo.py运行时修改了当前工作目录,resolve()默认会结合工作目录补全相对路径,添加strict=True参数可以强制读取文件的真实绝对路径,不受工作目录影响
  • 你通过软链接、临时拷贝的方式导入bar.py,或者导入路径配置错误导致实际加载的是X目录下的bar.py副本,你可以在bar.py中打印print(__file__)确认当前加载的文件实际路径

可选简化写法

如果确认没有软链接、工作目录修改的情况,直接在原代码基础上添加strict=True即可生效:

path = pathlib.Path(__file__).parent.resolve(strict=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:18:05