我在我的linux上使用postgres
安装了Psycopg2
和apt-get
。
我想将postgres
用于我的django
项目之一。
我创建了virtualenv
但是当我在db settings
中添加时,我无法使用psycopg2。
以下是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)
如何在virtualenv中使用psycopg2
?需要帮助。
(我正在学习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
答案 0 :(得分:2)
这里的问题是您使用apt-get
来安装驱动程序,该驱动程序已将其安装在您的系统python程序包目录中;默认情况下,创建的虚拟环境没有系统包。
因此,即使该命令在虚拟环境之外(使用系统Python)工作,它也不会在虚拟环境中工作。
您有两种方法可以解决此问题:
删除在虚拟环境的Python安装中找到的文件no-global-site-packages.txt
。
因此,如果您在/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
。
答案 1 :(得分:1)
解决方法是安装postgresql的服务器版本(好像你只安装了客户端)。在Ubuntu上:
sudo apt-get install postgresql-server-dev-X.Y
其中X.Y
是包的版本。
然后,在virtualenv
环境中安装psycopg2
模块:
pip install psycopg2
这应该有用。