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

发布个人Python包到PyPi的正确项目结构及导入报错求助

问题根源

你遇到的导入报错核心是setup.py的包声明配置与实际项目结构不匹配:

  • py_modules=['PythonDebuggerTools']参数仅用于声明存放在项目根目录的单文件Python模块,需要根目录下存在PythonDebuggerTools.py文件才能生效
  • 你实际的PythonDebuggerTools是带__init__.py的目录形式包,需要用packages参数声明,你把setuptools.find_packages()对应的配置行注释后,打包过程根本不会把你的包代码打入安装包,安装完成后自然找不到对应模块。
修复方案

1. 修改setup.py配置

取消packages相关行的注释,删除错误的py_modules配置即可,修改后的setup部分代码如下:

setup(
    name='PythonDebuggerTools',
    version=VERSION,
    author='Aakash Haran',
    author_email='email',
    description='Testing installation of Package',
    long_description=LONG_DESCRIPTION,
    long_description_content_type="text/markdown",
    url='https://github.com/Luna-Cake/Logger',
    license='MIT',
    packages=setuptools.find_packages(), # 取消该行注释
    install_requires=[],
)

2. 清理旧构建缓存

删除之前生成的错误构建产物,避免缓存影响新的打包结果:

# Linux/macOS 执行
rm -rf build dist *.egg-info

# Windows cmd 执行
rmdir /s /q build dist PythonDebuggerTools.egg-info

3. 本地测试验证

先做本地安装测试,确认导入正常后再上传PyPI:

# 本地可编辑模式安装,方便调试
pip install -e .

# 测试导入是否正常
python -c "import PythonDebuggerTools; from PythonDebuggerTools import logger; print('模块导入成功')"
推荐的标准PyPI Python包结构
项目根目录(和代码仓库名对应即可)
├── PythonDebuggerTools          # 实际包目录,和用户导入的名称完全一致
│   ├── __init__.py              # 必需文件,用于标记该目录为Python包
│   ├── logger.py                # 你的功能模块
│   └── 其他业务代码文件
├── tests                        # 可选,建议添加,存放单元测试用例
│   └── test_logger.py
├── README.md                    # 必需,包功能说明、使用文档
├── requirements.txt             # 可选,依赖声明
└── setup.py                     # 包配置文件

额外优化提示:

  • 你可以在PythonDebuggerTools/__init__.py中提前暴露对外提供的接口,简化用户的导入路径,示例:
# PythonDebuggerTools/__init__.py
from .logger import debug, error # 替换为你实际要暴露的函数、类名
__version__ = "0.0.3"

配置后用户可以直接用from PythonDebuggerTools import debug导入功能,不需要额外引入logger层。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:36:05