You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Django应用到Render时使用Poetry遇到的依赖问题

解决Django部署Render时的两个问题

一、ModuleNotFoundError: No module named 'dj_database_url'

问题根源是当前运行python manage.py runserver的Python环境,和Poetry安装依赖的虚拟环境不一致。按以下步骤解决:

  • 直接通过Poetry指定环境运行命令:
    poetry run python manage.py runserver
    
  • 或者先激活Poetry创建的虚拟环境,再执行启动命令:
    poetry shell
    python manage.py runserver
    
  • 验证环境是否匹配:运行poetry run which python(Mac/Linux)或poetry run where python(Windows),输出路径应指向Poetry虚拟环境下的Python,而非系统默认路径。如果之前手动激活过其他虚拟环境(如venv、conda),先退出再操作。

二、环境变量(如SECRET_KEY)的存储与读取

结合你的使用习惯和Render部署逻辑,按以下方式处理:

本地开发阶段

  • 继续用.env文件存储敏感变量,示例内容:
    SECRET_KEY=your-custom-secret-key
    DATABASE_URL=postgres://username:password@localhost:5432/your-db-name
    
  • 在settings.py中保留你熟悉的environs读取逻辑:
    from environs import Env
    
    env = Env()
    env.read_env()
    
    SECRET_KEY = env("SECRET_KEY")
    # 结合dj_database_url配置数据库
    import dj_database_url
    DATABASES = {
        "default": dj_database_url.config(default=env("DATABASE_URL"))
    }
    
  • 将.env文件加入.gitignore,避免敏感信息提交到代码仓库。

Render部署阶段

  • 无需上传.env文件,在Render服务后台操作:
    1. 进入你的Django服务详情页
    2. 点击「Environment」标签
    3. 在「Environment Variables」区域添加变量,比如SECRET_KEY,以及Render部署PostgreSQL后自动生成的DATABASE_URL
  • Render会在运行时自动将这些变量注入到环境中,environs和dj_database_url会正常读取,无需修改代码。

内容的提问来源于stack exchange,提问作者blueberry.py

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:46:27