Python如何正确创建并导入自定义模块解决多场景导入报错问题
实现方案
- 第一步:在
/root/my_module目录下新增一个空的__init__.py文件,该文件是Python识别目录为合法包的标准标识,不需要填写任何内容,不属于修改现有导入逻辑。 - 第二步:调整bar.py的单独运行方式,全程不需要修改任何现有代码的import语句:
- 运行main.py:保持原有逻辑,在
/root目录下执行python main.py即可正常运行 - 单独运行bar.py:不要进入
my_module目录执行python bar.py,改为在/root目录下执行python -m my_module.bar
- 运行main.py:保持原有逻辑,在
原理说明
Python的-m参数会将指定的包内模块当作脚本来运行,运行时会自动将当前执行命令的工作目录(即项目根目录/root)加入模块搜索路径,同时保留完整的包层级结构,既可以满足main.py导入时的包层级查找逻辑,也可以满足bar.py单独运行时同目录模块的查找需求,完全符合Python官方的包管理规范,不需要手动调整sys.path,天然适配嵌套层级较深的包结构。
内容的提问来源于stack exchange,提问作者chl
相关产品推荐
相关产品推荐

