什么时候会用到python -m

python -m是"模块运行模式",无需关心当前工作目录,只要项目根目录在python的sys.path中,即可直接运行后面跟的模块,比直接执行.py文件更灵活,尤其适用于多目录结构的项目

shell 复制代码
my_project/  # 项目根目录
  ├── src/   # 源码目录
  │   ├── __init__.py  # 标记为 Python 包
  │   ├── core/
  │   │   ├── __init__.py
  │   │   └── utils.py
  │   └── scripts/
  │       ├── __init__.py
  │       └── run_task.py  # 业务脚本,依赖 src.core.utils
  └── data/  # 数据目录

例如上面的项目中,若在根目录myproject/下,执行python src/scripts/run_task.py,若run_task.py中导入from src.core.utils import xxx,就会报ModuleNotFoundError: No module named 'src',因为python会将脚本所在目录src/scripts/作为默认根目录,无法识别上层src目录;

但若使用python -m src.scripts.run_task运行,python会将当前执行目录my_project(前提是加入PYTHONPATH中了)作为模块根目录,自动识别src包,完美解决跨目录导入问题

相关推荐
wuxinyan12311 小时前
工业级大模型学习之路019:LangChain零基础入门教程(第二篇):LLM 模块与模型抽象
人工智能·python·学习·langchain
凯瑟琳.奥古斯特11 小时前
操作系统核心结构解析
java·开发语言·c++·python·职场和发展
麻雀飞吧11 小时前
非 CTP 柜台连接天勤:众期融航易达等网关差异备忘
python
晚霞的不甘11 小时前
CANN 模型转换与适配:从 PyTorch 到 Ascend OM 的完整指南
人工智能·pytorch·python·深度学习
AI技术控12 小时前
TimesNet 论文解读:把一维时间序列变成二维变化建模的通用时序骨干
人工智能·python
And_Ii12 小时前
leetCode 146. LRU 缓存
python·链表
问窗12 小时前
计算机视觉入门案例 高速公路车辆计数系统技术解析
python·opencv·计算机视觉
Fleshy数模12 小时前
基于机器视觉的工业产品型号识别与报警系统实现
python·ocr·pyqt
gf132111112 小时前
python_更新飞书多维表格的单项关联字段
数据库·python·飞书
2601_9536603712 小时前
File类
linux·开发语言·python