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

如何通过Poetry将子文件夹打包为包,简化导入路径?

如何配置Poetry包以支持import package_folder.client导入?

问题背景

项目结构如下(省略__init__.py和py.typed文件):

folder
 |-pyproject.toml
 |-package_folder
    |-other_file.py
    |-api_folder
       |-client.py

当前pyproject.toml配置:

[tool.poetry]
packages = [
    { include = "package_folder/api_folder"}
]

此时生成的whl包要求使用者通过import package_folder.api_folder.client导入,但希望支持import package_folder.client的导入方式。尝试以下配置时出现错误:

packages = [
    { include = "api_folder", from = "package_folder", to = "package_folder" }
]

错误信息:

The Poetry configuration is invalid:
 - data.packages[0] must not contain {'to'} properties

解决方案

方法1:通过包的__init__.py调整导入路径(推荐)

这是Python包的常规做法,无需修改Poetry配置,只需在package_folder/__init__.py中添加导入语句:

# package_folder/__init__.py
from .api_folder import client

这样使用者就可以直接通过import package_folder.client或者from package_folder import client来导入模块。

方法2:修改Poetry的packages配置(直接调整包结构)

Poetry的packages配置不支持to属性,你可以通过指定具体文件并设置from路径,将client.py直接打包到package_folder目录下:

[tool.poetry]
packages = [
    { include = "package_folder" },
    { include = "client.py", from = "package_folder/api_folder" }
]

注:部分旧版本Poetry可能仍不支持该写法,若出现问题优先使用方法1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:12:34