2016-06-19 3 views
2

Я установил postgres и Psycopg2, используя apt-get на моем Linux.Использование Psycopg2 в virtualenv (Ubuntu 14.4, Python 3.4)

Я хочу использовать postgres для одного из моих проектов django.

Я создал virtualenv, но я не могу работать с psycopg2, когда добавляю его в db settings.

Вот setting.py

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

Я бегу сервер и получил ошибку Error loading psycopg2 module: No module named 'psycopg2'

проверяю установлен psycopg2 с помощью следующей команды.

python -c "import psycopg2; print(psycopg2.__version__)" 

Выход: 2.4.5 (dt dec mx pq3 ext)

Как использовать psycopg2 с virtualenv? нужна помощь.

(я учусь питона и Джанго)

Я попытался установить в virtualenv, а также.

pip install psycopg2 то ошибка Error: b'You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.\n'

Тогда я попытался pip install libpq-dev Теперь ошибка No matching distribution found for libpq-dev

+0

Вы пытались использовать pip для установки psycopg2 внутри virtualenv? Возможно, у вас есть две разные версии python и apt-get, которые были установлены только для python2. – Morishiri

+0

Как запустить сервер? Какую команду вы используете? И активирован ли виртуальный? – jpmc26

+0

@ Моришири Да, я сделал. проверьте обновленный вопрос. – Shri

ответ

1

Решение заключается в установке серверной версии postgresql (похоже, что у вас установлен только клиент).В Ubuntu:

sudo apt-get install postgresql-server-dev-X.Y 

где X.Y является версия пакета.

Затем внутри virtualenv среды установки psycopg2 модуль:

pip install psycopg2 

Это должно работать.

+0

Спасибо. Сработало. – Shri

2

Проблема здесь состоит в том, что вы использовали apt-get установить драйвер, который установил его в каталоге пакета в вашей системе питона; и по умолчанию виртуальная среда создается без системных пакетов.

Так как команда работает, когда вы находитесь за пределами виртуальной среды (с использованием системы Python), она не работает в виртуальной среде.

У вас есть два варианта, чтобы исправить это:

  1. удалить файл no-global-site-packages.txt найденных в установке Python вашей виртуальной среды.

    Так что, если вы создали виртуальную среду в /home/env/my-env/, то вы должны выполнить rm /home/env/my-env/lib/python3.4/no-global-site-packages.txt

    После того, что файл будет удален, виртуальная среда будет выглядеть в глобальной среде для недостающих пакетов.

  2. Установите системные библиотеки, которые позволят вам построить расширение. Для ubuntu это sudo apt install build-essential python-dev python3.4-dev libpq-dev. После того, как вы запустите эту команду, вы можете затем pip install psycopg2 в своей виртуальной среде.

+0

со всем уважением сэр, действительно ли это решение? – Shri

+0

Большое спасибо за детали. – Shri

Смежные вопросы