python manage.py migrate的问题 - >没有名为psycopg2的模块

时间:2015-10-20 12:56:13

标签: python django postgresql psycopg2 migrate

我在使用postgresql迁移Django时遇到了一些麻烦。

这是我第一次使用Django,我只是按照教程。

正如Django网站上所建议的那样,我创建了一个运行Django项目的virtualenv。

接下来,我使用以下设置创建了一个postgresql数据库:

enter image description here

在settings.py中,我为数据库设置了以下值:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django_tutorial',
        'USER': 'johan',
        'PASSWORD': '1234',
    }
}

使用apt-get安装psycopg2时,收到以下消息:

(venv)johan@johan-pc:~/sdp/django_tutorial/venv/django_tutorial$ sudo apt-get install python-psycopg2
Reading package lists... Done
Building dependency tree       
Reading state information... Done
python-psycopg2 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 95 not upgraded.

据我所知,这意味着安装了psycopg2。

运行时

$python manage.py migrate

我收到以下错误消息:

django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2

如果答案需要,我可以提供整个堆栈跟踪。

有人可以解释我能做些什么来解决这个问题吗?我也在谷歌寻找一个没有运气的解决方案。

3 个答案:

答案 0 :(得分:7)

一定是因为你在系统级python安装中安装psycopg2而不是你的virtualenv。

sudo apt-get install python-psycopg2

将在系统级python安装中安装它。

您可以通过

将其安装在virtualenv中
pip install psycopg2

激活你的virtualenv之后,或者你可以使用--system-site-packages标志创建你的virtualenv,这样你的virtualenv就会有你系统级python的包。

virtualenv --system-site-packages test

其中test是你的virtualenv。

答案 1 :(得分:1)

Psycopg是用于Python编程语言的最受欢迎的PostgreSQL数据库适配器。 当我尝试使用Postgresql数据库运行迁移时,我也面临着类似的问题。以下步骤对我来说很好。

激活您的虚拟环境并运行以下命令

pip install psycopg2-binary

现在尝试运行python manage.py migrate

答案 2 :(得分:0)

这是因为你在python virtualenv中使用Django并且如virtualenv web site所述:

  

它创建了一个拥有自己的安装目录的环境,   不与其他virtualenv环境共享库(和   也可以选择不访问全局安装的库。

这意味着您需要在virtualenv中安装psycopg2而不是globaly,或者让它访问全球安装的库。