移动.env至src目录后变量获取失败,如何修改其路径(无需decouple)
解决.env文件路径调整后无法读取环境变量的问题
假设你是用python-dotenv加载环境变量的,直接在main.py里指定.env文件的绝对路径即可,具体代码如下:
import os from dotenv import load_dotenv # 获取当前main.py所在的目录路径 current_script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接得到.env文件的完整路径 env_file_path = os.path.join(current_script_dir, '.env') # 加载指定路径的.env文件 load_dotenv(dotenv_path=env_file_path) # 之后正常获取环境变量即可 target_var = os.getenv('YOUR_VAR_NAME')
如果不想依赖python-dotenv,也可以手动读取.env文件并设置环境变量:
import os current_script_dir = os.path.dirname(os.path.abspath(__file__)) env_file_path = os.path.join(current_script_dir, '.env') with open(env_file_path, 'r', encoding='utf-8') as env_file: for line in env_file: # 跳过空行和注释行 stripped_line = line.strip() if not stripped_line or stripped_line.startswith('#'): continue # 拆分键值对(兼容值中包含等号的情况) key, *value_parts = stripped_line.split('=') value = '='.join(value_parts) os.environ[key.strip()] = value.strip() # 验证环境变量 target_var = os.getenv('YOUR_VAR_NAME')
原理说明:默认情况下,加载.env的逻辑会从当前工作目录查找文件。如果你是从项目根目录运行python src/main.py,工作目录是根目录,自然找不到src子目录里的.env。通过__file__获取脚本自身的绝对路径,再拼接.env的相对路径,就能精准定位到目标文件。
内容的提问来源于stack exchange,提问作者lwqx6
相关产品推荐
相关产品推荐

