【发布时间】:2021-08-01 07:10:25
【问题描述】:
尝试学习 Django。按照教程创建了我的虚拟环境。现在我正在尝试安装 psycopg2。我可以安装 psycopg2-binary,但有人告诉我“psycopg2-binary 有利于开发和测试,但建议将 psycopg2 用于生产”。所以我想弄清楚这一点。
在我的 venv 中,我正在运行 pip install psycopg2 它以这样的开头:
Collecting psycopg2
Using cached psycopg2-2.8.6.tar.gz (383 kB)
Using legacy 'setup.py install' for psycopg2, since package 'wheel' is not installed.
Installing collected packages: psycopg2
Running setup.py install for psycopg2 ... error
然后给出这个错误:
ERROR: Command errored out with exit status 1:
command: /Users/Me/Documents/Learn/PythonDjango/dev/project/venv/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/hf/9bs1zgkx5pj9gt84snhwrq780000gn/T/pip-install-atdy12xg/psycopg2_cd32e59009264d2bbf87b0a9def98b4e/setup.py'"'"'; __file__='"'"'/private/var/folders/hf/9bs1zgkx5pj9gt84snhwrq780000gn/T/pip-install-atdy12xg/psycopg2_cd32e59009264d2bbf87b0a9def98b4e/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/hf/9bs1zgkx5pj9gt84snhwrq780000gn/T/pip-record-30vttiiv/install-record.txt --single-version-externally-managed --compile --install-headers /Users/me/Documents/Learn/PythonDjango/dev/project/venv/include/site/python3.9/psycopg2
cwd: /private/var/folders/hf/9bs1zgkx5pj9gt84snhwrq780000gn/T/pip-install-atdy12xg/psycopg2_cd32e59009264d2bbf87b0a9def98b4e/
然后是一长串生成的警告。我做了一些研究,但我无法让它发挥作用。在 macOS Big Sur 11.2.1 上运行 Python 3.9.0
【问题讨论】:
-
您对从源代码编译 C 库的熟悉程度如何?这就是 pip+psycopg2 在幕后所做的。您需要设置您的系统,以便它提供一个 C 编译器、python 头文件和 libpq 头文件,以及一个名为 pg_config 的程序。 psycopg.org/docs/install.html#build-prerequisites 提供了更多关于从源代码构建 psycopg2 需要做什么的信息(即安装 psycopg2 而不是 psycopg2-binary)。
-
psycopg2 目前不支持 Python 3.9:psycopg.org/docs/install.html#prerequisites
-
您可能还缺少一些先决条件,此处列出:psycopg.org/docs/install.html#build-prerequisites。 SO上有关于安装先决条件的其他线程。 This 线程过去帮助过我。
标签: python macos psycopg2 python-venv