Django runserver错误(psycopg2)

时间:2014-02-02 22:02:24

标签: python django psycopg2

我正在尝试这样做:

python3.3 manage.py runserver

在我的Django项目文件夹中。我收到此错误消息:

  File "/usr/local/lib/python3.3/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 25, in <module>
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module  named 'psycopg2'

我在settings.py中的设置如下:

DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.postgresql_psycopg2',
        'NAME': 'test_databas',
        'USER': 'postgre',
        'PASSWORD': 'mypassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

我已经用Python3.3下载了psycopg2。文件/usr/local/lib/python3.3/site-packages/django/db/backends/postgresql_psycopg2/base.py也存在。但是,Python并不认为我有一个名为psycopg2的模块。我试过这个:

$ python3.3
Python 3.3.3 (default, Feb  2 2014, 14:32:49) 
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import psycopg2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'psycopg2'
>>> 

我也按照建议here更改了我的sys.path。

我是新手,非常感谢你的帮助。

5 个答案:

答案 0 :(得分:4)

我查看psycopg2

的本地安装
apt-cache show python-psycopg2
  

包:python-psycopg2

     

优先级:可选

     

部分:python

     

已安装尺寸:635

     

...

     

来源:psycopg2

     

版本:2.4.5-1

     

取决于:python2.7,python(&gt; = 2.7.1-0ubuntu2),python(&lt;&lt; 2.8),libc6(&gt; = 2.14),libpq5(&gt; = 8.3~)< /强>

因此,python-psycopg2会为您安装与python 3.x不兼容的版本。但是还有一个名为python3-psycopg2的软件包当我检查它时,它看起来也是版本:2.4.5-1 但描述性文字表明它与python 3.2

兼容
apt-cache show python3-psycopg2
  

包:python3-psycopg2

     

优先级:可选

     

版本:2.4.5-1

     

提供:python3.2-psycopg2

     

取决于:python3(&gt; = 3.2),python3(&lt;&lt;&lt; 3.3),libc6(&gt; = 2.14),libpq5(&gt; = 8.3~)

此外,包装尺寸也不同。可能python3-psycopg2正是您所需要的,它只是在文档上版本错误。

答案 1 :(得分:2)

我遇到了这个问题,并按照以下流程解决了问题:

安装pip3:

sudo apt-get install python3-pip

安装virtualenv:

sudo pip3 install virtualenv

安装posgresql依赖项:

sudo apt-get install python3-dev libpq-dev

配置virtualenv:

mkdir django
cd django
virtualenv -p /usr/bin/python3.4 venv
source venv/bin/activate

安装django:

pip3 install django

安装psycopg2:

pip3 install psycopg2

答案 2 :(得分:0)

如果您尝试使用默认用户,则拼错了“postgres”:

'USER': 'postgre',

http://pythonhosted.org//psycopg2/install.html#installation处的文档建议使用repos安装软件包。但是,请检查$ PATH变量。

答案 3 :(得分:0)

我自己解决了这个问题,但是我不确定为什么这会是一个很好的解决方案。对我来说,这个命令没有正确安装psycopg2:

sudo apt-get install python-psycopg2

我无法通过在python3.3中导入模块从命令行获取版本。所以这就是我所做的:

sudo apt-get install libpq-dev

sudo easy_install psycopg2

现在它看起来像这样:

$ python3.3 manage.py runserver
Validating models...

0 errors found
February 03, 2014 - 08:54:13
Django version 1.6.1, using settings 'testprojekt.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

如果有人知道为什么这样可以解决问题,请随时发表评论。 :)

答案 4 :(得分:0)

我建议你让生活更轻松,并使用virtualenv和pip来安装库。为什么?因为在virtualenv中你可以避免误认为python可执行文件和库已经安装了选定的python版本。

我个人为每个项目保留一个virtualenv,所以我只有我真正需要的库。另外我知道,随着更新系统,我不会最终得到一些不向后兼容的新版本的库。但是,如果pip upgrade <library>需要,我仍然可以更新库。我可以打包virtualenv并为我的项目制作需求列表。我不需要sudo来安装软件包,因此它也更安全。

安装virtualenv

sudo apt-get install python-virtualenv

准备virtualenv环境

sebastian@pc:~/test$ virtualenv -p python3.4 p34_virt_env
Running virtualenv with interpreter /usr/bin/python3.4
(...)

检查系统默认的python解释器

sebastian@pc:~/test$ python --version
Python 2.7.6

激活virtualenv环境(参见(p34_virt_env)virtualenv指标?)

sebastian@pc:~/test$ source p34_virt_env/bin/activate

再次检查python版本 - 它已更改

(p34_virt_env)sebastian@pc:~/test$ python --version
Python 3.4.0

您没有图书馆,环境清洁

(p34_virt_env)sebastian@pc:~/test$ pip list
pip (1.5.6)
setuptools (3.6)

现在,您可以安装所需的内容,如果必须安装python3-xxx python-xxx库,请不要担心。

(p34_virt_env)sebastian@pc:~/test$ pip install psycopg2