
.env和环境变量?核心思想很简单:将配置信息(尤其是敏感信息)从代码中剥离出来,存储在代码仓库之外的文件(如.env)或系统环境中。
.env文件,代码本身无需修改,只需加载对应环境的配置即可。.env.example模板,团队成员根据自己的环境填写。python-dotenv在Python生态中,python-dotenv库是处理.env文件的标杆。安装它:
pip install python-dotenv
.env秘密花园在你的量化项目根目录下(与manage.py、main.py等入口文件同级),创建一个名为.env的文件(注意前面有个点!)。
用文本编辑器(VSCode, Sublime, Notepad++, Vim都行)打开它,输入你的敏感配置,一行一个,格式如KEY=值:
# .env 文件 - 存放你的量化秘钥和核心配置(切勿上传到Git仓库!)
TUSHARE_TOKEN = '你的真实Tushare Token'# 示例:xxxxx
LLM_API_KEY = '你的真实LLM API Key'# 示例:sk-XXX
DATABASE_URL = '你的数据库连接串'# 示例:
⚠️ 关键安全动作 ⚠️:立刻!马上!将.env添加到你的.gitignore文件! 确保它不会被意外提交到Git仓库。
# .gitignore 文件(确保存在并添加)
.env
*.env
修改你原来写死的代码:
# 原写法 (风险极高!)
# tushare_token = 'd2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b'
# llm_api_key = 'sk-proj-abcdefghijklmnopqrstuvwxyz012345'
# 新写法 (安全优雅!)
import os
from dotenv import load_dotenv # 导入dotenv
# 1. 加载项目根目录下的 .env 文件
load_dotenv() # 默认就是找 .env 文件
# 2. 像访问字典一样安全地读取环境变量
tushare_token = os.getenv('TUSHARE_TOKEN') # 读取配置
llm_api_key = os.getenv('LLM_API_KEY')
database_url = os.getenv('DATABASE_URL')
# 3. (推荐) 读取时提供默认值或进行必要校验
ifnot tushare_token:
raise ValueError("TUSHARE_TOKEN 未在 .env 文件中配置或在环境变量中设置!")
# 或者给非核心配置设置默认值
log_level = os.getenv('LOG_LEVEL', 'INFO') # 如果没找到,默认是INFO
# 4. 像以前一样使用这些变量
# 例如初始化Tushare
# import tushare as ts
# pro = ts.pro_api(token=tushare_token)
# ... 其他使用LLM或数据库的代码
看,你的Token和Key在代码中消失了!它们安全地藏在了.env这个小金库里。
.env.example模板:
在项目根目录创建一个.env.example文件,包含所有需要的配置项名称和示例值(不要用真实值!)。团队成员克隆项目后,复制这个文件为.env,填入自己的真实值。将此.env.example提交到Git仓库。
区分环境:
为不同环境创建不同文件(如.env.development, .env.production)。在启动应用前通过环境变量(如APP_ENV=production)指定加载哪个文件。
# 根据环境变量加载不同配置
env = os.getenv('APP_ENV', 'development')
load_dotenv(f'.env.{env}') # 加载 .env.development 或 .env.production
生产环境设置:
在真正的生产环境(服务器、Docker容器、云平台),通常不直接使用.env文件。最佳实践是直接在操作系统的环境变量中设置这些值。几乎所有托管平台(阿里云ECS、腾讯云CVM、AWS EC2、Heroku、Docker)都提供了方便的方式设置环境变量。代码中os.getenv()依然有效!
敏感数据加密 (高级):
对于极其敏感的信息(如金融交易账户密码),考虑使用专门的密钥管理服务(KMS)如 AWS Secrets Manager, Azure Key Vault, HashiCorp Vault。.env文件中的值可以是一个指向KMS中密钥的标识符。
IDE支持:
现代IDE(PyCharm, VSCode)都对.env文件有很好的语法高亮支持,甚至能帮助自动补全。
将敏感配置(如量化必备的tushare_token, llm_api_key, 数据库密码等)从代码中剥离到.env文件或环境变量中管理,是一个低成本、高回报、且专业开发者必备的工程实践:
别再让你的Token在代码里裸奔了!花几分钟,按照教程配置好你的.env文件,给珍贵的量化密钥穿上隐身衣。安全性提升一小步,量化生涯安稳一大步!
如果我的分享对你有所帮助,不吝啬给个点赞关注呗。