Использование Psycopg2 в virtualenv (Ubuntu 14.4, Python 3.4)



Я установил postgres и Psycopg2, используя apt-get на моем linux.



Я хочу использовать 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? нуждаться в помощи.



(Я есмь изучение python и django)



Я также попытался установить в 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

539   2  

2 ответов:

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

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

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

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

pip install psycopg2

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

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

Таким образом, даже если команда работает, когда вы находитесь вне виртуальной среды (используя системный 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 в вашей виртуальной среде.

Comments

    Ничего не найдено.