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

Python打包疑问:awesome模块打包失败及导入路径配置问题

问题解决:正确打包awesome包并保留层级导入

错误原因分析

  1. 原配置中find_packages(where="awesome")仅扫描awesome目录下的子包(alice、bob、john),未将awesome本身作为顶层包纳入打包范围,导致构建时无法找到子包的正确路径,触发error: package directory 'alice' does not exist。
  2. 尝试的package_dir={"": "awesome"}配置,会将awesome目录下的子包直接映射为Python顶层包,丢失了awesome父包层级,不符合你的导入需求。

正确配置方案

方案一:使用find_packages的include参数(推荐)

通过include指定仅打包awesome及其所有子包,自动排除not_awesome_1、not_awesome_2:

from setuptools import find_packages, setup

setup(
    name="my-awesome-package",
    version="0.1.0",
    description="",
    long_description="",
    license="BSD",
    packages=find_packages(include=["awesome", "awesome.*"]),
    include_package_data=True,
    author="JPG",
    author_email="foo@gmail.com",
    install_requires=[],
)

方案二:显式列出所有包(适合结构简单场景)

如果包结构固定,可直接列出需要打包的所有包:

from setuptools import setup

setup(
    name="my-awesome-package",
    version="0.1.0",
    description="",
    long_description="",
    license="BSD",
    packages=["awesome", "awesome.alice", "awesome.bob", "awesome.john"],
    include_package_data=True,
    author="JPG",
    author_email="foo@gmail.com",
    install_requires=[],
)

验证

执行命令python3 setup.py bdist_wheel生成wheel包,安装后即可通过以下方式正常导入:

from awesome.alice.conf import Alice

alice = Alice()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:27:34