113

我是 Python 和 Django 的新手。

我正在使用 PostgreSQL 数据库引擎后端配置 Django 项目,但每次数据库操作都会出错。例如,当我运行时manage.py syncdb,我得到:

C:\xampp\htdocs\djangodir>python manage.py syncdb
Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
438, in execute_manager
    utility.execute()
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
261, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line
67, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in im
port_module
    __import__(name)
  File "C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py"
, line 7, in <module>
    from django.core.management.sql import custom_sql_for_model, emit_post_sync_
signal
  File "C:\Python27\lib\site-packages\django\core\management\sql.py", line 6, in
 <module>
    from django.db import models
  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 77, in <modul
e>
    connection = connections[DEFAULT_DB_ALIAS]
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 92, in __getitem
__
    backend = load_backend(db['ENGINE'])
  File "C:\Python27\lib\site-packages\django\db\utils.py", line 33, in load_back
end
    return import_module('.base', backend_name)
  File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in im
port_module
    __import__(name)
  File "C:\Python27\lib\site-packages\django\db\backends\postgresql\base.py", li
ne 23, in <module>
    raise ImproperlyConfigured("Error loading psycopg module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg module: No mo
dule named psycopg

有人可以告诉我发生了什么吗?

4

12 回答 12

218

您需要安装psycopg2Python 库。

安装


下载http://initd.org/psycopg/,然后在 Python PATH 下安装

下载后,轻松解压 tarball 并:

$ python setup.py install

或者,如果您愿意,可以通过easy_installpip安装它。

我更喜欢使用 pip 而不是 easy_install。

  • $ easy_install psycopg2
  • $ pip install psycopg2

配置


设置.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'db_name',                      
        'USER': 'db_user',
        'PASSWORD': 'db_user_password',
        'HOST': '',
        'PORT': 'db_port_number',
    }
}

- 其他安装说明可在下载页面安装页面找到

于 2011-03-24T15:23:28.710 回答
31

还要确保您已安装 PostgreSQL 开发包。在 Ubuntu 上,您需要执行以下操作:

$ sudo apt-get install libpq-dev
于 2012-08-16T14:12:25.500 回答
25

我使用的一步一步:

 - sudo apt-get install python-dev
 - sudo apt-get install postgresql-server-dev-9.1
 - sudo apt-get install python-psycopg2 - Or sudo pip install psycopg2

您可能需要安装一个图形工具来管理您的数据库,您可以这样做:

sudo apt-get install postgresql pgadmin4 

之后,您必须更改 Postgre 用户密码,然后执行:

 - sudo su
 - su postgres -c psql postgres
 - ALTER USER postgres WITH PASSWORD 'YourPassWordHere';
 - \q

在您的 settings.py 文件中,您可以:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'dbname',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': '',
        'PORT': '',
    }
}

额外的:

如果你想使用命令行创建数据库,你可以这样做:

- sudo su
- su postgres -c psql postgres
- CREATE DATABASE dbname;
- CREATE USER djangouser WITH ENCRYPTED PASSWORD 'myPasswordHere';
- GRANT ALL PRIVILEGES ON DATABASE dbname TO djangouser;

在您的 settings.py 文件中,您可以:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'dbname',
        'USER': 'djangouser',
        'PASSWORD': 'myPasswordHere',
        'HOST': '',
        'PORT': '',
    }
}
于 2014-09-28T16:52:46.400 回答
6

您可以使用以下命令安装“psycopg”:

# sudo easy_install psycopg2

或者,您可以使用 pip :

# pip install psycopg2

easy_install 和 pip 包含在ActivePython中,或者从各自的 项目站点手动安装。

或者,只需获取预构建的 Windows 安装程序

于 2011-03-22T17:20:12.597 回答
6

这可能看起来有点冗长,但它对我有用,没有任何错误。

首先,从 Ubuntu 软件中心安装 phppgadmin。

然后在终端中运行这些步骤。

sudo apt-get install libpq-dev python-dev
pip install psycopg2
sudo apt-get install postgresql postgresql-contrib phppgadmin

启动apache服务器

sudo service apache2 start

现在在终端中也运行它,以编辑 apache 文件。

sudo gedit /etc/apache2/apache2.conf

将以下行添加到打开的文件中:

Include /etc/apache2/conf.d/phppgadmin

现在重新加载apache。使用终端。

sudo /etc/init.d/apache2 reload

现在您必须创建一个新数据库。以“postgres”用户身份登录。继续在终端。

sudo su - postgres

如果您对“postgres”的密码有疑问,您可以使用此处的答案https://stackoverflow.com/a/12721020/1990793进行更改,然后继续执行这些步骤。

现在创建一个数据库

createdb <db_name>

现在创建一个新用户稍后登录 phppgadmin,提供一个新密码。

createuser -P <new_user>

现在你的 postgressql 已经设置好了,你可以去:

http://localhost/phppgadmin/

并使用您创建的新用户登录,以查看数据库。

于 2015-05-08T18:57:41.860 回答
4

直接的问题似乎是您缺少psycopg2模块。

于 2011-03-22T16:16:37.573 回答
3

如果您使用 Fedora 20、Django 1.6.5、postgresql 9.3.* 并且需要 psycopg2 模块,请执行以下操作:

yum install postgresql-devel
easy_install psycopg2

如果你像我一样,你可能很难找到有据可查的 libpq-dev rpm... 以上刚刚对我有用。

于 2014-06-23T02:30:05.407 回答
3

我在Mac上遇到了同样的问题。

解决方案是只使用PIP来安装所有东西,并触摸一些东西。

首先从以下位置安装 PIP: https ://pip.pypa.io/en/latest/

然后你要确定pg_config的路径是否在你的PATH (echo $PATH) 中,如果没有,你可以编辑你的 bash_profile:

vi /Users/<user>/.bash_profile

并添加这一行:

export PATH=$PATH:/path/to/pg_config/bin

如果您不知道 pg_config 在哪里,您可以使用“定位”工具,但请确保您的 locate.db 是最新的(我使用的是旧的 locate.db 并使用不存在的路径)。

sudo /usr/libexec/locate.updatedb
locate pg_config

然后安装 Django(如果需要)和 psycopg2。

sudo pip install Django
sudo pip install psycopg2

然后在 settings.py (localhost:defaultport)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'dbname',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': '',
        'PORT': '',
    }
}

问候!

于 2014-09-02T17:39:00.323 回答
2
$ sudo apt-get install libpq-dev

年,这解决了我的问题。执行此操作后,执行: pip install psycopg2

于 2014-04-20T14:24:34.280 回答
1

从头开始使用 PostgreSQL 数据库创建 Django 应用程序的步骤。

  1. 检查您的系统中是否安装了 PostgreSQL。在你的 bash shell 中输入

    psql --version
    
  2. 如果安装了 PostgreSQL,请跳转到第 6 步。

  3. 安装 PostgreSQL -

    sudo apt-get install python3-dev libpq-dev
    
    sudo apt-get install postgresql postgresql-contrib
    
  4. 默认情况下,PostgreSQL 安装会创建一个名为“postgres”的特殊用户,该用户拥有所有权限。登录 PostgreSQL

    sudo -u postgres psql
    

    退出 PostgreSQL 会话

    \q
    
  5. 现在为“postgres”用户设置密码。

    登录到 PostgreSQL -

    sudo -u postgres psql
    

    在 PostgreSQL 交互式会话中输入 -

    \password postgres
    
  6. 创建 PostgreSQL 数据库。

    直接从 bash shell 创建 -

    sudo -u postgres createdb your_db_name
    

    从 PostgreSQL 交互式会话创建 -

    createdb your_db_name
    

    要检查数据库是否已创建,请使用 PostgreSQL 命令列出所有数据库

    \l
    
  7. 如果您已经有一个现有的 Django 项目,则跳转到第 11 步。否则创建一个虚拟环境。我使用 virtualenv 包装器。

    mkvirtualenv your_project_name
    
  8. 创建 Django 项目。

    django-admin startproject your_project_name
    
  9. cd 到项目目录并创建您的应用程序。

     python manage.py startapp your_app_name
    
  10. 安装 Django。

    pip install django
    
  11. 安装 Psycopg2。Psycopg2 是 Python 的 PostgreSQL 数据库适配器。这是 Django 连接 PostgreSQL 所必需的。

    pip install psycopg2
    
  12. 更新 settings.py 如下

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'your_db_name',
            'USER': 'postgres',
            'PASSWORD': 'xxxxx',
            'HOST': 'localhost',
            'PORT': '',
        }
    }
    
  13. 运行迁移。

    python3 manage.py migrate
    
  14. 运行 Django 服务器并访问 localhost:8000

    python3 manage.py runserver 0.0.0.0:8000
    
  15. 如果需要,您可以安装 pgadmin - 一个图形客户端来查看和操作 PostgreSQL 数据库模式和数据。

于 2021-10-28T07:38:37.463 回答
0

请注意,psycopg2通过 pip 或 setup.py 安装需要有 Visual Studio 2008(更准确地说是可执行文件vcvarsall.bat)。如果您没有管理员权限来安装它或在 Windows 上设置适当的 PATH 变量,您可以从此处下载已编译的库。

于 2014-03-11T15:24:40.393 回答
0

PostgreSQL这是在 ubuntu 服务器中设置的非常好的一步一步的过程之一。我已经尝试过它Ubuntu 16.04和它的工作。

https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-django-application-on-ubuntu-14-04

于 2018-03-21T15:56:49.700 回答