Подтвердить что ты не робот

Django/Python Beginner: Ошибка при выполнении python manage.py syncdb - psycopg2 не найден

У меня есть Pythong2.6, psycopg2 и pgAdmin3, установленные с помощью Macports. Мои параметры 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 запускает сервер 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

Пожалуйста, помогите мне. Любой ответ будет оценен.

Спасибо,

Wenbert!

4b9b3361

Ответ 1

Кажется, что проблема с вашей установкой psycopg2 - Python ее не находит. Это проблема установки Python, а не проблема Django.

Вы можете попробовать загрузить его вручную с помощью интерпретатора Python и посмотреть, работает ли он:

$ python
>>> import psycopg2

Если вы получаете исключение ImportError, ваша установка ошибочна. Чтобы получить список всех каталогов, Python ищет модули, используйте sys.path:

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

Вы также можете добавить настраиваемые каталоги в путь поиска модуля Python, изменив переменную sys.path. Сделайте это где-то перед соответствующими инструкциями import:

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

# ...
import psycopg2

Ответ 2

Если у вас установлен pip, просто установите отсутствующее расширение, запустив:

$ pip install psycopg2

Ответ 3

Для записи я получил ту же ошибку по другой причине:

Я положил

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

вместо

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

in settings.py

Ответ 4

Следуйте шагам:

  1. Установите библиотеки Python в вашей ОС:
    • python-dev
    • libpq-dev
  2. Выполните команду для установки библиотеки psycopg2:
    • easy_install psycopg2

источник: http://initd.org/psycopg/install/

Ответ 5

Я понял, что у меня не установлено psycopg2

aptitude install python-psycopg2

Работал как шарм

Ответ 6

Хотя вы его установили, Python, по-видимому, не может найти модуль psycopg2. Обычно это связано с тем, что модуль не находится в пути Python. Посмотрите, можете ли вы найти папку с именем psycopg2 в /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages. Если это не так, MacPorts расскажет вам, где он помещает psycopg2? Если вы можете найти его, просто переместите его в каталог site-packages, и все будет в порядке.

Ответ 7

Для меня psycopg2 действительно был установлен, но не в virtualenv, в котором запускался Django. Эти два шага исправили это:

sudo apt-get build-dep python-psycopg2
sudo /opt/myenv/bin/pip install psycopg2

Ответ 8

Да, ответ "Тим" тоже работает для меня. Он работает без префикса "django.db.backends". также. Но не забудьте создать базу данных или схему, упомянутую в settings.py:

DATABASE_NAME = 'your_db_name' 

вручную, используя клиента базы данных, поэтому, когда вы запускаете "python manage.py syncdb", у вас не возникает такая же проблема. Я застрял, потому что я не создал его вручную. У меня такая же проблема может быть, потому что я использовал buildout.

Ответ 9

Я получил ту же ошибку, но это было потому, что я использовал python26 ./manage.py runserver, когда у моего virtualenv были только python и python2.6 исполняемые файлы (при этом использовалась система python26, у которой не было psycopg2 установлен

Ответ 10

Ответ Тима тоже работал у меня. По умолчанию settings.py показывает такие параметры, как "postgresql_psycopg2", "mysql" и т.д., Без имени пакета. Префикс с 'django.db.backends.' работал у меня (для postgresql_psycopg2, по крайней мере).

Ответ 11

У меня была эта проблема недавно после обновления homebrew на OSX. psycopg2 уже был указан в моем virtualenv. Я просто переустановил psycopg2, и он снова заработал:

pip install --force-reinstall psycopg2

Ответ 12

Я нахожусь в 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.)

Ответ 14

здесь то же самое, но, возможно, это было пропущено в текущем проекте, поэтому я перешел в основной каталог проекта и установил его.

pip install psycopg2

и это сработало

Ответ 15

Вы можете получить эту ошибку при развертывании heroku с помощью django postgresql в качестве бэкэнда, просто добавив psycopg2 в ваш файл require.txt.

Ответ 16

Эта ошибка также возникает, когда вы забыли активировать виртуальную среду.