惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
B
Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
腾讯CDC
小众软件
小众软件
G
Google Developers Blog
V
Visual Studio Blog
罗磊的独立博客
GbyAI
GbyAI
V
V2EX
大猫的无限游戏
大猫的无限游戏
H
Help Net Security
L
LangChain Blog
Engineering at Meta
Engineering at Meta
量子位
The GitHub Blog
The GitHub Blog
博客园 - 司徒正美
WordPress大学
WordPress大学
B
Blog RSS Feed

博客园 - VipSoft

FastAPI 全局 HTTP 异常处理器 + 统一响应封装 SpringBoot 心跳日志不记录 access.log Qdrant Linux 安装(非Docker) LangChain — RAG 知识库(实操) LangChain — RAG 构建知识库(理论) LangChain — RAG 构建知识库(实操) Qdrant 安装(Windows) LangChain — RAG 构建知识库 Python 项目简单部署(Linux) MinerU - 将非结构化文档(PDF、图片、Office 文件等)转换为机器可读的 Markdown 和 JSON LangChain 入门 服务端部署-FastAPI LangChain 入门 LangSmith LangChain 入门 实战 - 食谱推荐 LangChain 入门 Memory 会话记忆 LangChain 入门 Tools 工具 LangChain 入门 Tools 工具 LangChain 入门 Prompts 提示词 LangChain 入门 Message 消息 LangChain 入门 Model 的初始化和调用 LangChain 入门 Agent 的基本运行机制 AI 0基础学习,名词解析 LangChain 和 LangGraph AI大模型知识体系 Dify — Workflow - 数据可视化 Dify — 连接MySQL配置 Dify — Chatflow - 数据库智能查询 Dify — Chatflow - 文档知识库 Dify — Agent 智能体 高安全券码、注册码生成 Dify — 文本生成应用
Python PyCharm 运行,取不到 .env 文件中的值
VipSoft · 2026-08-04 · via 博客园 - VipSoft

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

以脚本方式运行:uv run app/worker.py
以模块方式运行:uv run -m app.worker

这两个命令都用于在 uv 管理的虚拟环境中执行 Python 代码,但它们的运行方式和上下文有本质区别:


1. uv run python -m app.worker

  • 以模块方式运行:通过 -m 参数将 app.worker 当作一个模块来执行(即 app/worker.py)。
  • 包上下文:Python 会正确识别 app 作为包,因此模块内的相对导入(如 from . import xxx)会正常工作。
  • sys.path 行为:当前工作目录会被添加到 sys.path,但模块的 __package____name__ 会被设置为 app.worker__main__,符合包结构。
  • 适用场景:适合执行包内的子模块(如 Celery worker、后台任务),尤其当项目依赖包内其他模块时。

2. uv run python main.py

  • 以脚本方式运行:直接执行 main.py 文件。
  • 无包上下文:脚本所在的目录会被添加到 sys.path,但 __package__ 通常为 None相对导入会失败(除非显式处理)。
  • 独立性:适合作为入口点的顶层脚本(如 Flask/Django 启动文件),不依赖包结构。

关键区别总结

特性 python -m app.worker python main.py
运行方式 模块(包内) 脚本(文件)
相对导入支持 ✅ 支持 ❌ 不支持(除非包已安装)
__package__ 设置 设为 app 通常为 None
适用场景 包内子模块、任务、后台进程 顶层入口程序、单文件脚本

如何选择?

  • 如果 app.worker 是一个包内的模块,并且它需要导入同一包下的其他模块(如 from . import utils),必须使用 python -m app.worker,否则会报 ImportError
  • 如果 main.py 是项目根目录下的独立启动脚本(例如 app.pyrun.py),并且不依赖包内相对导入,直接用 python main.py 更简洁。

uv run 前加上是确保使用项目虚拟环境,不影响上述区别。两者本质上都是启动 Python,但上下文不同,根据代码组织方式选择即可。