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

如何让Python包从自身目录查找内部文件而非当前运行目录

问题根源

  • 你代码中使用的os.path.join("dir", "file.ext")属于相对路径,Python拼接相对路径时默认会以代码执行时的当前工作目录作为基准,而非class_objects.py文件所在的目录作为基准,所以才会定位到你运行代码的工作目录下的路径,找不到包内部的文件。

修复步骤

1. 修改class_objects.py的路径拼接逻辑

使用Python内置的__file__变量获取当前脚本的绝对路径,再基于这个路径拼接包内部的文件路径,修改后代码如下:

import os

class Naive(object):
    ...
    def find_and_run(self): # 注意实例方法必须加self参数,原代码漏写会触发调用报错
        # 获取当前class_objects.py文件所在的目录绝对路径
        current_py_dir = os.path.dirname(os.path.abspath(__file__))
        # 拼接包内部dir/file.ext的绝对路径
        out_dir = os.path.join(current_py_dir, "dir", "file.ext")
        naive_model = RunThing(stan_file=out_dir)

额外提醒:检查文件名拼写,你目录结构里dir下的文件是file.exe,但代码和报错里写的是file.ext,如果是拼写错误要同步修正。

2. 配置打包规则,确保非py文件被打包进安装包

Python默认打包时只会包含.py文件,你需要修改pyproject.toml添加包数据配置,让dir下的文件也被打包:

[tool.setuptools.package-data]
"my-package" = ["dir/*"]

修改完成后重新构建、重新安装本地包即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:42:03