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

Django3.0.5+PostgreSQL执行makemigrations时psycopg2加载失败求助

Django 3.0.5 + PostgreSQL 环境下 psycopg2 DLL 加载失败问题

问题详情

执行python manage.py makemigrations时触发以下错误:

(agenda_api) C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agendadj\agenda>python manage.py makemigrations
Traceback (most recent call last):
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\db\backends\postgresql\base.py", line 25, in <module>
    import psycopg2 as Database
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\psycopg2\__init__.py", line 51, in <module>
    from psycopg2._psycopg import (                     # noqa
ImportError: DLL load failed while importing _psycopg: 找不到指定的模块。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agendadj\agenda\manage.py", line 21, in <module>
    main()
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agendadj\agenda\manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\core\management\__init__.py", line 377, in execute
    django.setup()
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\apps\registry.py", line 114, in populate
    app_config.import_models()
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\apps\config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Users\felip\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\contrib\auth\models.py", line 2, in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\contrib\auth\base_user.py", line 47, in <module>
    class AbstractBaseUser(models.Model):
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\db\models\base.py", line 121, in __new__
    new_class.add_to_class('_meta', Options(meta, app_label))
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\db\models\base.py", line 325, in add_to_class
    value.contribute_to_class(cls, name)
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\db\models\options.py", line 208, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\db\__init__.py", line 28, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\db\utils.py", line 207, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\db\utils.py", line 111, in load_backend
    return import_module('%s.base' % backend_name)
  File "C:\Users\felip\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "C:\Users\felip\OneDrive\Escritorio\Managment\Cursos\Django\agenda_api\lib\site-packages\django\db\backends\postgresql\base.py", line 29, in <module>
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: DLL load failed while importing _psycopg: 找不到指定的模块。

项目依赖清单requirements.txt:

asgiref==3.2.7
Django==3.0.5
django-model-utils==4.0.0
psycopg2==2.8.5
pytz==2019.3
sqlparse==0.3.1
Unipath==1.1

已尝试操作:

  • 更换psycopg2版本无效
  • 卸载psycopg2安装psycopg-binary后出现新错误

解决办法

1. 先解决版本兼容性问题

从报错日志能看到你用的是Python 3.10,但:

  • Django 3.0.5官方只支持到Python 3.8,和3.10不兼容
  • psycopg2 2.8.5也不支持Python 3.10,要2.9.0及以上版本才支持

两种调整方向:

  • 降级Python:把Python降到3.8,然后安装psycopg2 2.8.6(2.8系列最后一个版本,兼容3.8),保持Django 3.0.5不变
  • 升级Django:把Django升到3.2+(3.2开始支持Python 3.10),然后安装psycopg2 2.9.x或psycopg-binary 2.9.x

2. 手动安装适配的psycopg2二进制包

如果不想动Python/Django版本,可找适配Python 3.10的psycopg2 wheel包手动安装:

  • 下载对应cp310、win_amd64的psycopg2 wheel文件
  • 执行pip install 下载的文件名.whl完成安装

3. 检查PostgreSQL依赖路径

psycopg2需要PostgreSQL的libpq.dll支持,确保:

  • PostgreSQL安装目录下的bin文件夹(比如C:\Program Files\PostgreSQL\14\bin)已添加到系统环境变量PATH
  • 重启命令行终端,让环境变量生效后再执行makemigrations

4. 重建虚拟环境

虚拟环境可能存在依赖缓存冲突,彻底重建试试:

  • 退出虚拟环境,删除原agenda_api文件夹
  • 重新创建:python -m venv agenda_api
  • 激活:agenda_api\Scripts\activate
  • 修改requirements.txt里的psycopg2版本为兼容版,执行pip install -r requirements.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:20:55