You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python CLI项目结构引发ModuleNotFoundError,如何兼容两种运行方式?

兼容直接运行源码与pip安装的Python CLI解决方案

针对你的foo CLI应用遇到的导入问题,以下两种方案可以同时适配直接运行源码和pip安装后的运行场景:

方案一:相对导入 + 模块模式运行

  1. 修改src/foo/__main__.py的导入语句为相对路径:
from .applogic import execute_foo

# 你的CLI执行逻辑
if __name__ == "__main__":
    execute_foo()
  1. 直接运行源码时,从项目根目录执行以下命令(使用Python的模块运行模式):
python -m src.foo
  • 为什么可行:-m参数会自动将src目录加入模块搜索路径,让Python识别foo为合法包;pip安装后,foo作为顶级包被安装到site-packages,相对导入会被正确解析为包内路径,CLI运行foo时完全正常。

方案二:动态调整模块搜索路径

如果偏好直接运行__main__.py文件,可在src/foo/__main__.py开头添加路径适配代码:

import sys
from pathlib import Path

# 将src目录加入模块搜索路径的最前端
sys.path.insert(0, str(Path(__file__).parent.parent))

from foo.applogic import execute_foo

if __name__ == "__main__":
    execute_foo()
  • 原理:Path(__file__).parent.parent定位到项目根下的src目录,将其加入sys.path后,无论是直接运行文件还是pip安装后,from foo.applogic import...都能找到对应的模块。

推荐方案

优先选择方案一,因为它遵循Python的模块导入规范,避免手动修改sys.path可能引发的路径冲突问题,同时保持项目结构的标准性。

内容的提问来源于stack exchange,提问作者Mark Vincze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:32:51