python - 在 virtualenv 中使用 Psycopg2(Ubuntu 14.4,Python 3.4)

标签 python django virtualenv psycopg2

我已经在我的 Linux 上使用 apt-get 安装了 postgresPsycopg2

我想将 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)时可以工作,但在虚拟环境内部却不起作用。

您有两种选择来解决此问题:

  1. 删除在虚拟环境的 Python 安装中找到的文件 no-global-site-packages.txt

    因此,如果您在 /home/env/my-env/ 创建了虚拟环境,那么您将执行 rm/home/env/my-env/lib/python3.4/no-global-site-packages.txt

    删除该文件后,虚拟环境将在全局环境中查找任何丢失的包。

  2. 安装允许您构建扩展的系统库。对于 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/

相关文章:

python - 尝试索引字符串列表并根据其索引删除字符串

python - 多索引列 - 选择内部

python - 关闭开发服务器上的 Celery 任务延迟

python - 通过 pip 在一台服务器上安装 Twisted

python - virtualenv python - 将 Pydev 与 Eclipse neon 结合使用

linux - Virtualenv:找不到工作命令

python - 将 '?' 用于对象信息如何工作?

python - Django Rest Framework 在 ListAPIView 上使用 DjangoModelPermissions

python - 如何使用 tastypie 和 geodjango 测量距离?

python - C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中没有