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

使用Poetry发布的PyPI包安装后缺失资源文件问题

问题描述

项目结构:

| my-projectttttttt
│
├───dist
│       my_projectttttttt-1.0.0-py3-none-any.whl
│       my_projectttttttt-1.0.0.tar.gz
│
├───src
│   ├───my_projectttttttt
│   │       __init__.py
│   │       __main__.py
│   │
│   └───resources
│           my_projectttttttt.png
│
├───tests
│       test_my_project.py
|
│ LICENSE.md
│ pyproject.toml
│ README.md

当前pyproject.toml配置:

[build-system]
requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning"]
build-backend = "poetry.core.masonry.api"

[tool.poetry]
name = "my-projectttttttt"
version = "1.0.0"
description = "The description of the package"
license = "MIT"
authors = ["George K. Wright"]
repository = "https://github.com/"
homepage = "https://github.com/"

packages = [
    { include = "my_projectttttttt", from = "src"},
]
include = [
    { path = "src/resources" },
]


[tool.poetry.dependencies]
python = ">=3.6"
requests="^2.28.1"


[tool.poetry.scripts]
my-projectttttttt = "my_projectttttttt.__main__:main"

遇到的问题:执行poetry build后,归档文件的src/目录下同时存在模块和resources文件夹,但发布后通过pip install安装,site-packages下的模块目录里只有__init__.py和__main__.py,resources文件夹缺失。

解决方案

错误原因

你当前的include配置仅将src/resources打包进了归档的src目录,但Poetry安装时只会把packages字段指定的my_projectttttttt模块(来自src)复制到site-packages对应目录,src/resources属于模块外的独立目录,不会被自动迁移到模块安装路径,因此安装后看不到。

修正方法

方法1:将资源移到模块目录内(推荐)

  1. 调整项目结构,把src/resources文件夹移动到src/my_projectttttttt目录下,结构变为:
├───src
│   └───my_projectttttttt
│           __init__.py
│           __main__.py
│           resources
│               my_projectttttttt.png
  1. 修改pyproject.toml,二选一即可:

方式A:修改packages字段

packages = [
    { include = "my_projectttttttt", from = "src", include = ["resources/**/*"] },
]

方式B:添加package.data配置

[tool.poetry.package.data]
"my_projectttttttt" = ["resources/*"]

方法2:保持资源在src同级(不推荐)

如果必须保留src/resources的位置,修改include配置指定资源安装后的目标路径:

include = [
    { path = "src/resources", target = "my_projectttttttt/resources" },
]

这样打包时会把src/resources内容放到归档的my_projectttttttt/resources目录,安装后就会出现在site-packages的模块目录下。

验证

修改后执行poetry build,解压生成的whl文件,检查my_projectttttttt目录下是否包含resources文件夹,确认无误后再发布安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:55:30