django.core.exceptions.ImproperlyConfigured: 加载psycopg模块时出错:找不到名为psycopg的模块。

87

目前,我正在尝试为一个项目配置Django,并且在运行python manage.py syncdb时遇到一个持久性错误。

File "/x/x/x/x/x/x/base.py", line 23, in ?
    raise ImproperlyConfigured("Error loading psycopg module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg module: No module named psycopg

我在此和其他网站上找到的有关类似问题的讨论都是通过用户下载和安装psycopg来解决的,但除非我漏掉了什么关键点,否则我已经尝试多次这样做。我下载了tarball,在我的服务器上解压它,使用 python setup.py buildpython setup.py install 命令,并将其 --prefix 指向现有的 Python Path... 我可以进入文件夹并看到各种psycopg文件,但由于某些原因,当我尝试让我的新项目与数据库同步时,它无法找到psycopg2,结果就无法连接到数据库。

注:hostmonster.com 账户,尝试过多个psycopg2版本。


这个问题已经解决了。在安装了当前版本的Python之后,整个过程对我来说非常顺利和快速。感谢s.zakharov的帮助。 - user968270
当我更新一些依赖项时,我遇到了相同的错误。对我有用的方法是删除我的虚拟环境,创建一个全新的,并安装依赖项。 - lmiguelvargasf
18个回答

106

我也遇到了这个错误;虽然我在系统上使用 apt-get 安装了 psycopg2,但我的虚拟环境无法找到它:

>>> import psycopg2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named psycopg2

通过在虚拟环境中执行pip install psycopg2-binary(或对于低于2.8版本的psycopg2,执行pip install psycopg2)来解决此问题。


1
我已经完成了这个,'ENGINE': 'django.db.backends.postgresql_psycopg2',以及你建议的事情。仍然是同样的错误。 - NixMan
4
用户警告:psycopg2轮包将在2.8版本之后改名,为了继续从二进制文件安装,请使用“pip install psycopg2-binary”代替。 - Roman
谢谢Roman。你节省了我的时间,我已经在我的virtualenv中解决了psycopg2问题。 - Chirag Kalal
3
我尝试使用 pip install psycopg2-binary 进行修复,并解决了问题。 - Chandan Sharma

35

在虚拟环境中输入 pip install psycopg2-binary 对我有效


19

我在Ubuntu 18.4的virtualenv中遇到了这个问题。 我通过安装psycopg2 v2.7.4来解决它:


pip install psycopg2==2.7.4

2
谢谢!这个对我也起作用了。我在我的 requirements.txt 中有 psycopg2==2.8.3,以前没有任何问题。你知道为什么旧版本现在可以工作而最新版本不行吗? - Joehat

12

试着使用这个:

sudo apt-get install python-psycopg2

3
使用sudo apt-get install python3-psycopg2 命令可安装Python3的psycopg2模块。 - Mox
1
请建议如何在Windows中完成此操作。 - NixMan
确认在Ubuntu 18上。 - Dmitry Yudin

9

在MacOS上,psycopg2 v2.8.4及其二进制文件尚不兼容python 3.8。

降级到python 3.7即可。所有工作正常。

1- 在mac上(venv外),卸载3.8,然后按照说明安装3.7:https://www.youtube.com/watch?v=X2VXCEfIgC0

2- 进入django项目的主文件夹,删除'venv'文件夹和'manage.py'

3- 使用python 3.7安装新的venv。命令:python3 -m venv ./venv

4- 运行venv。命令:source ./venv/bin/activate

5- 在这个新venv中再次安装django。命令:pip3 install django这将在./venv/bin/下创建'django-admin',以及django库。

6- 再次像为新项目一样创建manage.py。命令:django-admin startproject <project folder> .(注意末尾的“.”)

由于之前已经存在,所以该命令不会运行。因此,在运行创建新文件夹的命令之前,将其重命名为_temp,并将_temp内容复制到新文件夹中。删除_temp。

7- 运行:pip3 install psycopg2

和:pip3 install psycopg2-binary

(如果您遇到pg_config可执行文件未找到的错误,则在安装psycopg之前,在venv下运行以下命令:

export PATH=“/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH)

7

您尝试加载的是psycopg,而不是psycopg2。请确保在项目的settings.py中将ENGINE设置为django.db.backends.postgresql_psycopg2:

'ENGINE': 'django.db.backends.postgresql_psycopg2'

可能的问题是:32位版本的Python无法加载64位版本的psycopg2。

这是我担心的过程的一部分:我的psycopg安装在主pythonpath文件夹中创建了一个名为“lib64”的新目录,而Django的其余部分只创建了一个“bin”和“lib”文件夹。我将此“lib64”添加到我的.bashrc文件中,当我运行import sys和sys.path时,psycopg2目录会显示在列表中。是否有特定的文件名包含实际的psycopg模块?在psycopg2目录的顶层中,我有一个psycopg1.py和psycopg1.pyc,但是阅读它们,它们似乎是辅助的。 - user968270
你的 Python 是什么版本?如果 Python 是 64 位的,你是否安装了 64 位版本的 psycopg2 库? - sergzach
psycopg2位于lib64/python2.4/site-packages/psycopg2。 我的所有其他Django文件都在lib/python2.4/site-packages/psycopg2中。每当我安装psycopg2时,它总是创建此“lib64”目录。 我修改了我的.bashrc文件以将其包含在Pythonpath中,但我可能已经这样做不正确。我应该只是将psycopg2移动到正常的lib's site-packages吗?主机怪兽预装的python版本似乎是32位的。我将尝试安装32位版本的psycopg2。 - user968270
psycopg2目录中的Django文件是什么?是您项目的文件还是Django库的文件? - sergzach
我的问题是我没有安装适当的软件包,所以我只需要运行命令 apt-get install libpq-dev python-dev postgresql postgresql-contrib python-psycopg2 就可以了,一切都好了。 - Robert Johnstone
显示剩余5条评论

6

我也遇到了类似的错误,它只是意味着无法找到"psycopg2"包/模块。 我通过使用以下命令在我的环境中安装它来解决它:

pip install psycopg2


4

我希望这个命令可以解决你的问题(在Ubuntu上测试过)

pip install psycopg2-binary

3

我在Python虚拟环境(virtualenv)中遇到了这个问题,将库从系统的site-packages复制到环境的site-package中解决了这个问题。


3

错误:由于EnvironmentError,无法安装软件包:[Errno 13] 权限被拒绝: '/usr/local/lib/python3.7/dist-packages/psycopg2'。请考虑使用--user选项或检查权限。

如果出现以上错误,请尝试使用以下命令进行安装:

pip install psycopg2-binary --user

然后就可以正常工作了,无需编辑DATABASE ENGINE。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接