都是 ChatGPT 写的,我就不掩饰了。
在开发环境和生产环境使用不同的配置文件
太好了!既然你用的是 Python,那我们就用 python-dotenv
配合环境变量管理来优雅地区分本地和生产配置 🐍✨
🌟 一套完整可用的 Python 环境变量配置方案
✅ 第一步:安装依赖
pip install python-dotenv
✅ 第二步:创建 .env
文件
你可以建两个文件:
.env
(开发环境用)
APP_ENV=development
API_URL=http://localhost:8000
DEBUG=true
.env.production
(生产环境用)
APP_ENV=production
API_URL=https://yourdomain.com
DEBUG=false
✅ 第三步:在项目中读取 .env
文件
创建一个 config.py
来统一管理配置 👇
import os
from dotenv import load_dotenv
# 判断使用哪个 env 文件
env_file = '.env.production' if os.getenv('ENV') == 'production' else '.env'
load_dotenv(dotenv_path=env_file)
class Settings:
APP_ENV: str = os.getenv("APP_ENV", "development")
API_URL: str = os.getenv("API_URL", "http://localhost:8000")
DEBUG: bool = os.getenv("DEBUG", "false").lower() == "true"
settings = Settings()
然后你就可以在任意地方使用:
from config import settings
print("当前环境:", settings.APP_ENV)
print("是否开启调试:", settings.DEBUG)
✅ 第四步:启动时传入 ENV
开发时:
ENV=development python main.py
生产部署时:
ENV=production python main.py
✅ Bonus:FastAPI 的典型用法
如果你用的是 FastAPI,可以把配置和应用分开:
from fastapi import FastAPI
from config import settings
app = FastAPI(debug=settings.DEBUG)
@app.get("/")
def read_root():
return {
"env": settings.APP_ENV,
"api_url": settings.API_URL
}
创建 python 虚拟环境
当然可以!🥼我们来一步一步创建一个新的 Python 虚拟环境,并从你当前的 conda 环境导出依赖到 requirements.txt
,然后再基于这个文件创建一个全新的虚拟环境。
✅ 一整套创建虚拟环境的标准流程(基于现有 conda 环境)
📦 第一步:从现有的 conda 环境导出 requirements.txt
假设你的 conda 环境名为 myenv
(可以用 conda env list
查看你的环境名),然后执行:
conda activate myenv
pip freeze > requirements.txt
💡 为什么不直接用 conda list --export
?
因为 pip freeze
生成的是 pip 能识别的格式,而 requirements.txt
主要就是给 pip 用的,适合在虚拟环境中用。
🧰 第二步:创建新的虚拟环境(使用 venv
)
推荐使用 Python 自带的 venv
模块,不依赖 conda,更轻量。
python -m venv venv
这将在当前目录下创建一个名为 venv
的虚拟环境。
🚀 第三步:激活虚拟环境
不同系统命令略有不同:
- Windows:
.\venv\Scripts\activate
- macOS / Linux:
source venv/bin/activate
你激活后会看到命令行前面多了 (venv)
这样的提示。
📥 第四步:安装 requirements.txt
中的依赖
确保激活虚拟环境后运行:
pip install -r requirements.txt
🌼 第五步(可选):验证依赖是否安装成功
pip list
确保列表中的依赖与你在 conda 环境中看到的匹配。
🧹 第六步(可选):清理不必要的包
如果你只想保留实际使用的依赖,推荐用:
pip install pipreqs
pipreqs . --force
它会根据你代码中实际 import
的内容,生成一个精简版 requirements.txt
。
利用 pm2 管理进程
🧰 第一步:安装 PM2
如果你还没装 PM2,可以用以下命令安装(需要 Node.js):
npm install -g pm2
🚀 第二步:用 PM2 启动你的 Python 程序
直接运行下面这条命令即可:
pm2 start "ENV=production ./venv/bin/python main.py" --name ice-backend
说明:
ENV=production
:这是你自定义的环境变量。python3 main.py
:是你项目的启动指令。--name ice-backend
:是你给这个进程起的名字(可以随便换)。
🔄 第三步:设置开机自启(部署用)
pm2 startup
pm2 save
这可以让你的程序在服务器重启后自动重新启动。
📝 第四步:查看与管理进程
- 查看运行状态:
pm2 status
- 查看日志输出:
pm2 logs ice-backend
- 重启程序:
pm2 restart ice-backend
- 停止程序:
pm2 stop ice-backend
- 删除进程:
pm2 delete ice-backend
📦 Bonus:保存配置文件(可选)
你也可以写一个 ecosystem.config.js
:
module.exports = {
apps: [
{
name: "ice-backend",
script: "main.py",
interpreter: "python3",
env: {
ENV: "production"
}
}
]
}
然后启动:
pm2 start ecosystem.config.js