我已经在我的 Linux 上使用 apt-get
安装了 postgres
和 Psycopg2
。
我想将 postgres
用于我的一个 django
项目。
我已经创建了virtualenv
,但当我将其添加到数据库设置
中时,我无法使用psycopg2。
这是setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'secondnginxapp',
'USER': 'myprojectuser',
'PASSWORD': 'postgres',
'HOST': '127.0.0.1',
'PORT': '',
}
}
我运行服务器并收到错误加载 psycopg2 模块时出错:没有名为“psycopg2”的模块
我使用以下命令检查已安装的psycopg2
。
python -c "import psycopg2; print(psycopg2.__version__)"
输出:2.4.5(dt dec mx pq3 ext)
如何将 psycopg2 与 virtualenv 一起使用?需要帮助。
(我正在学习 python 和 django)
我也尝试在 virtualenv
中安装。
pip install psycopg2
然后错误是 Error: b'You need to install postgresql-server-dev-X.Y 来构建服务器端扩展或 libpq-dev 来构建客户端-侧面应用程序。\n'
然后我尝试了pip install libpq-dev
,现在错误是没有找到libpq-dev的匹配发行版
最佳答案
这里的问题是你使用了apt-get
来安装驱动,它已经将其安装在你的系统python的包目录下;默认情况下创建的虚拟环境没有系统包。
因此,即使该命令在虚拟环境外部(使用系统 Python)时可以工作,但在虚拟环境内部却不起作用。
您有两种选择来解决此问题:
删除在虚拟环境的 Python 安装中找到的文件
no-global-site-packages.txt
。因此,如果您在
/home/env/my-env/
创建了虚拟环境,那么您将执行rm/home/env/my-env/lib/python3.4/no-global-site-packages.txt
删除该文件后,虚拟环境将在全局环境中查找任何丢失的包。
安装允许您构建扩展的系统库。对于 ubuntu,这是 sudo apt install build-essential python-dev python3.4-dev libpq-dev 。运行该命令后,您就可以在虚拟环境中
pip install psycopg2
。
关于python - 在 virtualenv 中使用 Psycopg2(Ubuntu 14.4,Python 3.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37904631/