










PyCharm 以模块的方式运行
要读取 .env 变更,需要在 Paths to ".env" files 后面指定变更文件的路径,或者如图,以项目根目录运行

以脚本方式运行:uv run app/worker.py
以模块方式运行:uv run -m app.worker
这两个命令都用于在 uv 管理的虚拟环境中执行 Python 代码,但它们的运行方式和上下文有本质区别:
uv run python -m app.worker-m 参数将 app.worker 当作一个模块来执行(即 app/worker.py)。app 作为包,因此模块内的相对导入(如 from . import xxx)会正常工作。sys.path 行为:当前工作目录会被添加到 sys.path,但模块的 __package__ 和 __name__ 会被设置为 app.worker 和 __main__,符合包结构。uv run python main.pymain.py 文件。sys.path,但 __package__ 通常为 None,相对导入会失败(除非显式处理)。| 特性 | python -m app.worker |
python main.py |
|---|---|---|
| 运行方式 | 模块(包内) | 脚本(文件) |
| 相对导入支持 | ✅ 支持 | ❌ 不支持(除非包已安装) |
__package__ 设置 |
设为 app |
通常为 None |
| 适用场景 | 包内子模块、任务、后台进程 | 顶层入口程序、单文件脚本 |
app.worker 是一个包内的模块,并且它需要导入同一包下的其他模块(如 from . import utils),必须使用 python -m app.worker,否则会报 ImportError。main.py 是项目根目录下的独立启动脚本(例如 app.py 或 run.py),并且不依赖包内相对导入,直接用 python main.py 更简洁。在 uv run 前加上是确保使用项目虚拟环境,不影响上述区别。两者本质上都是启动 Python,但上下文不同,根据代码组织方式选择即可。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。