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

Django从SQLite切换PostgreSQL时出现psycopg2 __version__属性错误

问题分析与解决步骤

看起来你在把Django默认数据库从SQLite切换到PostgreSQL时遇到了两个典型问题,我来帮你一步步搞定:

1. 先解决psycopg2驱动的问题

错误日志里的AttributeError: module 'psycopg2' has no attribute '__version__'是核心信号——你的虚拟环境里要么没装PostgreSQL的Python驱动psycopg2,要么安装的包有问题。

修复步骤:

  • 先激活你的虚拟环境:
    workon meshine_api
    
  • 安装psycopg2的二进制版本(比源码安装更省心,适合开发环境):
    pip install psycopg2-binary
    
    你的Vagrantfile里已经预装了python3-dev和postgresql这些编译依赖,所以直接安装就能成功。

2. 修正PostgreSQL的数据库配置

你当前的settings.py配置犯了一个常见错误:PostgreSQL的NAME参数不是文件路径(这是SQLite的用法),而是你要连接的数据库名称,另外还得补充用户名、主机等必要参数。

修改后的正确配置:

# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'meshine_api_db',  # 自定义的数据库名称,你可以改成自己喜欢的
        'USER': 'postgres',        # PostgreSQL默认的超级用户
        'PASSWORD': '',            # 开发环境下postgres用户通常没设密码,留空即可
        'HOST': 'localhost',       # 数据库在本地运行,填localhost
        'PORT': '5432',            # PostgreSQL默认端口
    }
}

别忘了创建数据库!

配置好之后,得先在PostgreSQL里创建对应的数据库:

  • 进入PostgreSQL命令行:
    sudo -u postgres psql
    
  • 执行创建数据库的SQL命令:
    CREATE DATABASE meshine_api_db;
    
  • 输入\q退出命令行。

3. 验证修复效果

做完上面两步,运行数据库迁移再启动服务器:

python manage.py makemigrations
python manage.py migrate
python manage.py runserver 0.0.0.0:8080

这时候应该就能正常启动了。

可选:让Vagrant自动帮你装依赖

如果你不想每次启动虚拟机都手动装包,可以在Vagrantfile的shell脚本末尾加这段,让它自动创建虚拟环境并安装依赖:

# 创建虚拟环境并安装必要包
su - ubuntu -c "mkvirtualenv meshine_api -p python3 && workon meshine_api && pip install psycopg2-binary django"

内容的提问来源于stack exchange,提问作者kabrice

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:30:31