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!
Ответы
Ответ 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
Следуйте шагам:
- Установите библиотеки Python в вашей ОС:
- Выполните команду для установки библиотеки
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.)
Ответ 13
ЭТО ПОМОЖЕТ МЕНЯ:
Я просто добавил путь к буферов PostgreSQL в ENV и смог обработать необходимую DLL:
C:\Program Files (x86)\PostgreSQL\9.4\bin
https://groups.google.com/forum/#!topic/robotframework-users/qLq9KvHe1wE
Ответ 14
здесь то же самое, но, возможно, это было пропущено в текущем проекте, поэтому я перешел в основной каталог проекта и установил его.
pip install psycopg2
и это сработало
Ответ 15
Вы можете получить эту ошибку при развертывании heroku с помощью django postgresql в качестве бэкэнда, просто добавив psycopg2 в ваш файл require.txt.
Ответ 16
Эта ошибка также возникает, когда вы забыли активировать виртуальную среду.