发布个人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
相关产品推荐
相关产品推荐

