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

Python包中np.load加载本地npy文件路径错误问题求助

解决Python包内npy文件加载路径问题

问题核心

包安装后,资源文件的路径逻辑和源码开发环境完全不同,仅靠Path(__file__)和sdist的include配置,无法覆盖wheel安装等场景,导致文件找不到。

解决方案

1. 修正pyproject.toml的资源配置

Flit的sdist.include仅控制源码包(tar.gz)包含的文件,wheel包需要额外配置package-data才能把资源文件打包进去。修改你的配置:

[tool.flit.sdist]
include = [
    "my_file.npy",
]

# 新增配置:替换成你的实际包名(比如你的包叫mypackage就写mypackage)
[tool.flit.package-data]
mypackage = ["my_file.npy"]

2. 使用官方推荐的资源加载方式

放弃Path(__file__)的方式,改用Python标准库的importlib.resources加载包内资源,这种方式兼容所有安装场景(源码、wheel、zip包等):

from importlib.resources import files
import numpy as np

# 替换成你的包名,比如你的包名为`mypackage`
resource_path = files("mypackage").joinpath("my_file.npy")
data = np.load(resource_path)

如果需要兼容Python 3.8及以下版本,先安装importlib_resources包(pip install importlib-resources),代码改成:

from importlib_resources import files
import numpy as np

resource_path = files("mypackage").joinpath("my_file.npy")
data = np.load(resource_path)

3. 检查文件位置

确保my_file.npy放在你的包根目录下,和包的__init__.py文件同级,这样配置才能正确识别并打包该文件。

验证步骤

  1. 重新构建包:flit build
  2. 安装新构建的包:pip install dist/your-package-file.whl
  3. 运行代码测试资源加载是否正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:52:11