Использование 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
2 ответов:
Решение заключается в установке серверной версии postgresql (похоже, что у вас установлен только клиент). На Ubuntu:
sudo apt-get install postgresql-server-dev-X.Y, где
X.Y- версия пакета.Затем, внутри
virtualenvокружения установитеpsycopg2модуль:pip install psycopg2Это должно сработать.
Проблема здесь заключается в том, что вы использовали
apt-getдля установки драйвера, который установил его в каталоге пакетов вашей системы python; и по умолчанию виртуальная среда создается без системных пакетов.Таким образом, даже если команда работает, когда вы находитесь вне виртуальной среды (используя системный Python), она не работает внутри виртуальной среды.
У вас есть два варианта, чтобы исправить это:
Удалите файл
no-global-site-packages.txt, найденный в вашем виртуальном установка среды Python.Итак, если вы создали виртуальную среду в
После удаления этого файла виртуальная среда будет искать в глобальной среде все отсутствующие пакеты./home/env/my-env/, то вы выполнили быrm /home/env/my-env/lib/python3.4/no-global-site-packages.txtУстановите системные библиотеки, которые позволят вам построить расширение. Для ubuntu это
sudo apt install build-essential python-dev python3.4-dev libpq-dev. Как только вы выполните эту команду, вы можете затемpip install psycopg2в вашей виртуальной среде.
Comments