如何在Pip安装的Python包子模块中引用根目录模块?
解决Python包内跨目录模块引用问题
针对你的情况,有两种可靠的解决方式:
1. 绝对导入(推荐用于已pip安装的包)
因为你的包已经通过pip安装,Python会将my_package识别为顶级包,所以需要从包名开始完整引用模块。修改do_stuff_x.py中的导入语句为:
from my_package.request_models import MyModel
这种方式无论包被安装到哪个环境,都能稳定找到目标模块。
2. 相对导入(仅用于包内部开发调试)
如果是在包的开发阶段调试代码,可以使用相对路径导入,通过..表示上一级目录(从model目录回到my_package根目录):
from ..request_models import MyModel
注意:相对导入不能直接运行do_stuff_x.py文件,只能在该文件作为包的一部分被其他代码导入时生效。
额外注意事项
- 确保
src/my_package目录下存在空的__init__.py文件,虽然Python 3.3+支持无该文件的命名空间包,但添加它能提升兼容性和包结构的明确性。 - 可以用
pip show my_package命令查看包的安装路径,确认安装的文件结构和你本地开发的一致。
内容的提问来源于stack exchange,提问作者Josh Russo
相关产品推荐
相关产品推荐

