Python包发布后遇ModuleNotFoundError:找不到helpers模块
解决Python包导入
ModuleNotFoundError: No module named 'helpers'问题 问题分析
从报错回溯看,你的rdfdf.py中使用了from helpers.rdfdf_utils import anaphoric的绝对导入语句,但安装后helpers是rdfdf包的子模块,Python会在全局模块路径中查找helpers,而非rdfdf包的子目录,导致找不到模块。另外需确保打包配置正确包含helpers子包。
解决方案
1. 修正导入语句
将rdfdf.py中的导入语句改为以下两种方式之一:
- 相对导入(推荐,适用于包内模块引用):
注意前面的from .helpers.rdfdf_utils import anaphoric.,表示从当前模块的同级子模块中导入。 - 绝对导入(明确指定包路径):
from rdfdf.helpers.rdfdf_utils import anaphoric
2. 确保打包配置包含子包
如果使用setuptools,修改setup.py确保正确识别helpers子包:
from setuptools import setup, find_packages setup( name="rdfdf", version="你的版本号", # 自动查找所有含__init__.py的子包 packages=find_packages(), # 若你的包结构是单文件+子目录(如根目录下rdfdf.py和helpers/),则用以下配置: # packages=["rdfdf"], # package_dir={"rdfdf": "."}, # include_package_data=True, # package_data={"rdfdf": ["helpers/*.py", "helpers/__init__.py"]}, )
若使用pyproject.toml,添加包配置:
[project] name = "rdfdf" version = "你的版本号" # 自动查找所有包 packages = { find = {} }
3. 重新打包发布
执行以下命令更新PyPI上的包:
# 删除旧打包文件 rm -rf dist/ build/ *.egg-info # 重新构建包 python -m build # 上传到PyPI(需提前安装twine) twine upload dist/*
4. 验证修复
卸载旧版本并重新安装:
pip uninstall -y rdfdf pip install rdfdf
测试导入:
python -c "from rdfdf import DFGraphConverter"
内容的提问来源于stack exchange,提问作者lupl
相关产品推荐
相关产品推荐

