Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在virtualenv(Ubuntu 14.4、Python 3.4)中使用Psycopg2_Python_Django_Virtualenv_Psycopg2 - Fatal编程技术网

在virtualenv(Ubuntu 14.4、Python 3.4)中使用Psycopg2

在virtualenv(Ubuntu 14.4、Python 3.4)中使用Psycopg2,python,django,virtualenv,psycopg2,Python,Django,Virtualenv,Psycopg2,我已经使用apt-get在我的linux上安装了postgres和Psycopg2 我想将postgres用于我的一个django项目 我已经创建了virtualenv,但在db settings中添加psycopg2时,我无法使用它 这里是setting.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'secondngin

我已经使用
apt-get
在我的linux上安装了
postgres
Psycopg2

我想将
postgres
用于我的一个
django
项目

我已经创建了
virtualenv
,但在
db settings
中添加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'您需要安装postgresql-server-dev-X.Y来构建服务器端扩展,或者安装libpq-dev来构建客户端应用程序。\n'


然后我尝试了
pip安装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安装psycopg2


  • 解决方案是安装postgresql的服务器版本(看起来您只安装了客户端)。在Ubuntu上:

    sudo apt-get install postgresql-server-dev-X.Y
    
    其中
    X.Y
    是软件包的版本

    然后,在
    virtualenv
    环境安装
    psycopg2
    模块内:

    pip install psycopg2
    

    这应该行得通。

    您是否尝试过使用pip在virtualenv中安装psycopg2?您可能有两个不同版本的python,并且只为python2安装了它。您如何运行服务器?你用什么命令?virtualenv激活了吗?@Morishiri是的,我激活了。请检查更新的问题。@jpmc26 virtualenv已激活。我尝试了
    python manage.py runserver
    @shri,我想您已经在更新的问题中找到了答案。请务必安装postgresql-server-dev-X.Y(将X.Y替换为版本-9.4是目前最新的afaik-使用apt get),先生,这是一个实际的解决方案吗?非常感谢您提供详细信息。