我正在为一个已经两年没有在本地运行的 Django 项目恢复本地环境,解决已经过时的问题。但我的有一点不同:看起来 Django 正在寻找/使用比我在 venv 本身中看到的版本更旧的 PostgreSQL 版本。追踪旧版本以便删除它们的好方法是什么?
当我跑步
python mysite/manage.py runserver
时,我得到
django.db.utils.NotSupportedError: PostgreSQL 13 or later is required (found 10.13).
但是当我检查正在运行的 venv 中的软件包版本时,大多数软件包都是最新的,并且 PostgreSQL 是 3.12.5(不是我们最终需要的 13 或更高版本,但也不是 10.13)。
(来自 pip 列表)Django 5.1
(来自 pip 列表)psycopg2 2.9.9
(来自 pip 列表)psycopg2-binary 2.9.9
(来自 pip 列表)psycopg2-pool 1.2
psql -V 给出:psql (PostgreSQL) 12.3
python -v 给出:Python 3.12.5
毫不奇怪,如果我尝试从 venv (
pip uninstall postgresql-10.13
) 进行天真的卸载,它会说它尚未安装。
追踪 10.13 可能来自何处的好方法是什么?
查看堆栈跟踪,在连接到数据库时引发此 NotSupportedError,来自 .venv/lib/python3.12/site-packages/django/db/backends/base/base.py”,第 200 行,在 check_database_version_supported
从 venv 中,我的 $PATH 变量有:
/Users/dkaplan/.vscode/extensions/ms-python.python-2024.12.3-darwin-x64/python_files/deactivate/bash:/Users/dkaplan/family-django/.venv/bin:/Library/Frameworks/ Python.framework/Versions/3.12/bin:/Library/Frameworks/Python.framework/Versions/3.12/bin:/Library/Frameworks/Python.framework/Versions/3.10/bin:/usr/local/bin:/usr/ bin:/bin:/usr/sbin:/sbin:/Users/dkaplan/.m2:/Applications/Postgres.app/Contents/Versions/latest/bin:/var/run/com.apple.security.cryptexd/codex .system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system /bootstrap/usr/appleinternal/bin:/Users/dkaplan/.vscode/extensions/ms-python.python-2024.12.3-darwin-x64/python_files/deactivate/bash:/Users/dkaplan/family-django/.venv /bin:/Library/Frameworks/Python.framework/Versions/3.12/bin:/Library/Frameworks/Python.framework/Versions/3.10/bin
我的默认数据库设置是:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": DB_DATABASE,
"USER": DB_USER,
"PASSWORD": DB_PASSWORD,
"HOST": DB_HOST,
"PORT": "5432",
"OPTIONS": DB_OPTIONS,
}
}
您无法 pip uninstall postgresql-10.13,因为 postgresql-10.13 不是 Python 包。
您可以像卸载计算机中的程序一样卸载特定版本的 postgresql。请参阅卸载 PostgreSQL。