从PyPI导入自制Python包时出现ModuleNotFoundError求助
问题排查与解决方案
核心问题分析
你的导入错误本质是包的目录结构不符合setuptools的打包要求,导致发布后的包没有生成Python可识别的标准包结构,进而无法被import找到。
具体修复步骤
1. 调整文件结构
当前src目录下缺少包含__init__.py的ch_package子目录(这是Python包的必要标识),修改后的正确结构应为:
项目根目录/ ├── setup.py ├── README.md └── src/ └── ch_package/ └── __init__.py
将你的name函数直接写入src/ch_package/__init__.py中:
def name(text): return 'My name is Chanaka'
2. 确认setup.py配置
你的现有setup.py配置是正确的:
packages=setuptools.find_packages(where='src')会自动在src目录下识别到ch_package包(因为存在__init__.py)package_dir={'':'src'}正确指定了包的根目录为src
3. 重新发布与验证
- 卸载本地已安装的错误版本:
pip uninstall ch_package -y - 重新构建包文件:
python setup.py sdist bdist_wheel - 上传新版本到PyPI(需提前安装twine:
pip install twine):twine upload dist/* - 安装更新后的包并测试:
此时执行pip install ch_package --upgradefrom ch_package import name即可正常导入。
额外验证
可以查看Python site-packages目录下的ch_package文件夹,确认其包含__init__.py文件,以此验证包结构是否正确安装。
内容的提问来源于stack exchange,提问作者Chanaka Eranga
相关产品推荐
相关产品推荐

