什么时候会用到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包,完美解决跨目录导入问题

相关推荐
喵手12 小时前
Python爬虫实战:构建 Steam 游戏数据库:requests+lxml 实战游戏列表采集与价格监控(附JSON导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集steam商店游戏列表数据·sqlite数据库存放采集数据·价格监控游戏推荐市场分析
老蒋每日coding13 小时前
LangGraph:从入门到Multi-Agent超级智能体系统进阶开发
开发语言·python
岚天start13 小时前
Python HTTP服务器添加简单用户名密码认证的三种方案
服务器·python·http
cuber膜拜13 小时前
Weaviate 简介与基本使用
数据库·python·docker·向量数据库·weaviate
HealthScience13 小时前
DNA具体怎么转为蛋白质的?
python
PacosonSWJTU13 小时前
mac-python解释器理解与python安装
开发语言·python
urkay-13 小时前
Android 中实现 HMAC-SHA256
android·开发语言·python
DN202013 小时前
AI销售机器人的隐私痛点与破解之道
人工智能·python·机器学习·机器人·节日
恬淡如雪14 小时前
Excel接口测试自动化实战
爬虫·python·excel
云草桑14 小时前
15分钟快速了解 Odoo
数据库·python·docker·postgresql·.net·odoo