39

我使用 Macports 安装了 Pythong2.6、psycopg2 和 pgAdmin3。我的 settings.py 是:

DATABASE_ENGINE = 'postgresql_psycopg2'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'mysite'             # Or path to database file if using sqlite3.
DATABASE_USER = 'postgres'             # Not used with sqlite3.
DATABASE_PASSWORD = ''         # Not used with sqlite3.
DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.

运行 python manage.py syncdb 时出现的错误是:

Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/__init__.py", line 362, in execute_manager
    utility.execute()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/__init__.py", line 303, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/base.py", line 195, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/base.py", line 221, in execute
    self.validate()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/base.py", line 249, in validate
    num_errors = get_validation_errors(s, app)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/validation.py", line 22, in get_validation_errors
    from django.db import models, connection
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/__init__.py", line 41, in <module>
    backend = load_backend(settings.DATABASE_ENGINE)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/__init__.py", line 17, in load_backend
    return import_module('.base', 'django.db.backends.%s' % backend_name)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 22, in <module>
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2

请注意,我是这方面的初学者。我最初是一名 PHP 专家,正在为一个小型个人项目尝试 Python。我需要“打开” Postgres 吗?

另外,当我 sudo python manage.py runserver 8080 我得到这个错误:

Validating models...
Unhandled exception in thread started by <function inner_run at 0x1242670>
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/commands/runserver.py", line 48, in inner_run
    self.validate(display_num_errors=True)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/base.py", line 249, in validate
    num_errors = get_validation_errors(s, app)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/core/management/validation.py", line 22, in get_validation_errors
    from django.db import models, connection
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/__init__.py", line 41, in <module>
    backend = load_backend(settings.DATABASE_ENGINE)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/__init__.py", line 17, in load_backend
    return import_module('.base', 'django.db.backends.%s' % backend_name)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 22, in <module>
    raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named psycopg2

请指导我。任何回复将不胜感激。

谢谢,

温伯特!

4

18 回答 18

40

您的安装似乎有问题psycopg2- Python 没有找到它。这是 Python 安装问题,而不是 Django 问题。

您可以尝试使用 Python 解释器手动加载它,看看它是否有效:

$ python
>>> import psycopg2

如果你得到一个ImportError异常,你的安装是错误的。要获取 Python 查找模块的所有目录的列表,请使用sys.path

$ python
>>> import sys
>>> print sys.path

您还可以通过修改sys.path变量将自定义目录添加到 Python 的模块搜索路径。在相应import语句之前的某处执行此操作:

import sys
sys.path.append("my-path")

# ...
import psycopg2
于 2009-09-05T11:51:18.973 回答
30

如果您已pip安装,只需运行以下命令安装缺少的扩展:

$ pip install psycopg2
于 2012-05-01T14:18:47.013 回答
17

作为记录,由于不同的原因,我得到了同样的错误:

我放了

'ENGINE': 'django.db.backends.postgresql'

代替

'ENGINE': 'django.db.backends.postgresql_psycopg2'

settings.py

于 2011-02-28T23:14:05.817 回答
7

按照步骤:

  1. 在你的操作系统上安装 python 库:
    • python-dev
    • libpq-dev
  2. 执行命令安装psycopg2库:
    • easy_install psycopg2

来源:http: //initd.org/psycopg/install/

于 2012-02-29T11:24:07.337 回答
4

我意识到我没有安装 psycopg2

aptitude install python-psycopg2

像魅力一样工作

于 2012-08-15T16:46:49.590 回答
4

在 OSX 上更新自制软件后,我最近遇到了这个问题。psycopg2 已经在我的 virtualenv 中列出。我刚刚重新安装了 psycopg2 并且它再次工作:

pip install --force-reinstall psycopg2

于 2015-08-12T03:47:32.130 回答
3

尽管您安装了它,但 Python 显然找不到模块 psycopg2。这通常是由于模块不在 Python 的路径中。看看你能不能在/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages. 如果它不存在,MacPorts 有没有告诉你它把 psycopg2 放在哪里?如果可以找到,只需将其移至site-packages目录即可。

于 2009-09-05T11:49:09.770 回答
2

对我来说,确实安装了 psycopg2,但没有安装到运行 Django 的 virtualenv 中。这两个步骤修复了它:

sudo apt-get build-dep python-psycopg2
sudo /opt/myenv/bin/pip install psycopg2
于 2014-12-20T13:59:41.457 回答
1

是的,蒂姆的回答也对我有用。它没有前缀“django.db.backends”。还。但请记住创建您在 settings.py 中提到的数据库或模式:

DATABASE_NAME = 'your_db_name' 

手动使用您的数据库客户端,因此当您运行“python manage.py syncdb”时,您不会遇到同样的问题。我被卡住了,因为我没有手动创建它。我遇到同样的问题可能是因为我使用了 buildout。

于 2011-06-21T05:37:51.767 回答
1

我得到了同样的错误,但这是因为我在使用python26 ./manage.py runserver时我的 virtualenv 只有pythonpython2.6可执行文件(因此python26正在使用系统,它没有psycopg2安装

于 2011-07-11T09:59:46.963 回答
0

蒂姆的回答也对我有用。默认情况下,settings.py 显示诸如“postgresql_psycopg2”、“mysql”等选项,没有包名。以 'django.db.backends.' 为前缀。为我工作(至少对于 postgresql_psycopg2)。

于 2011-03-02T16:45:34.897 回答
0

我在 Windows 上并安装了 psycopg2,但安装的是 64 位版本。所以我的修复是从这里下载 32 位的,然后在 PowerShell 中激活我的虚拟环境,我的修复是:

pip uninstall psycopg2
easy_install C:\WHEREVER_I_DOWNLOADED_IT\psycopg2-2.6.1.win32-py3.4-pg9.4.4-release.exe

(Windows Python 3.4 安装程序会自动安装 easy_install 和 pip,pip 是删除包的最简单方法,即使最初是使用 easy_install 安装的。)

于 2015-09-07T16:43:39.313 回答
0

这对我有帮助:

我刚刚将 PostgreSQL bin 路径添加到 ENV,它能够很好地处理所需的 dll:C:\Program Files (x86)\PostgreSQL\9.4\bin

https://groups.google.com/forum/#!topic/robotframework-users/qLq9KvHe1wE

于 2015-09-16T11:26:06.963 回答
0

这里也一样,但可能在当前项目中丢失了,所以我导航到主项目目录并安装它。

pip install psycopg2

它奏效了

于 2019-03-16T17:57:22.337 回答
0

您可以在使用 django postgresql 作为后端的 heroku 部署中遇到此错误,只需将 psycopg2 添加到您的 requirements.txt 文件中

于 2019-05-10T07:06:27.593 回答
0

当您忘记激活虚拟环境时也会发生此错误。

于 2019-09-09T04:43:27.363 回答
0

使用 Django 3.2.9 和 Python 3.9.1,之后pip3 install psycopg2,这是我必须做的,以使初始python manage.py migrate工作:

在我的 Django 站点的settings.py文件中,我将这些行添加到文件顶部(from pathlib import Path在行之后):

import sys
sys.path.append('Users/MY_USER_NAME/Sites/SITE_NAME/env/lib/python3.9/site-packages')

抱歉...~/Sites/...路径设置不起作用(我试过),它必须是绝对的完整路径。

我的数据库设置如下:

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.postgresql',
      'NAME': 'DATABASE_NAME',
      'USER': os.getenv('PG_USER'),
      'PASSWORD': os.getenv('PG_PASS'),
      'PORT': '5432',
      'USE_TZ': True,
   }
}

一旦我将这两行添加到settings.py文件的顶部,迁移就成功运行了:)

于 2021-11-16T22:26:56.150 回答
0

对于module not found的错误,通常是好的

pip install module_name

将解决问题。如果不是这种情况,请查找您尝试安装的模块的二进制文件。安装二进制文件,然后再次安装模块。这种情况下的示例模块是

心理咨询师2

二进制是psychpg2-binary 所以像这样安装它们

pip install psycopg2-binary
pip install psycopg2
于 2022-02-21T00:09:42.010 回答