ImportError:没有名为 psycopg2 的模块

Posted

技术标签:

【中文标题】ImportError:没有名为 psycopg2 的模块【英文标题】:ImportError: No module named psycopg2 【发布时间】:2012-10-06 01:26:38 【问题描述】:

在OpenERP 6的安装过程中,我想用这些命令生成一个配置文件:

cd /home/openerp/openerp-server/bin/
./openerp-server.py -s --stop-after-init -c /home/openerp/openerp-server.cfg

但它总是显示消息:ImportError: No module named psycopg2

当我检查 psycopg2 包时,它已经安装了。软件包 python-psycopg2-2.4.5-1.rhel5.x86_64 已安装到其最新版本。没事做。这有什么问题?我的服务器是 CentOS,我已经安装了 Python 2.6.7。

【问题讨论】:

您需要接受一些其他问题的答案。 安装python2.4的包。如果您手动安装了 2.6,那么您还必须安装 2.6 的所有其他软件包。 请执行以下命令确认python系统路径。 $ python -c 'import sys; print sys.path' 请在 python 控制台上尝试import psycopg2 如果你得到了答案然后选择答案。 【参考方案1】:

我做了两件事来解决这个问题:

    使用 Python 3.6 而不是 3.8。 将 Django 版本更改为 2.2(可能正在使用更高版本,但我更改为 2.2)

【讨论】:

【参考方案2】:

通过以下解决方案解决了问题:

    基本上是由于 _bz2.cpython-36m-x86_64-linux-gnu.so Linux 包文件引起的问题。尝试找到位置。

    检查安装python的位置(哪个python3)-示例:/usr/local/bin/python3

    复制INSTALL_LOCATION/lib/python3.6下的文件

cp -rvp /usr/lib64/python3.6/lib-dynload/_bz2.cpython-36m-x86_64-linux-gnu.so /usr/local/lib/python3.6

【讨论】:

【参考方案3】:

Mac OS 上的导入错误 如果psycopg2 正在安装,但您无法将其导入.py 文件,则问题出在libpq、它的链接以及openssllibpq 所依赖的库中。整个步骤如下所示。您可以逐步检查它以了解您的错误来源,然后您可以从那里进行故障排除。

检查openssl 的安装并确保它正常工作。

检查您的系统中是否安装了libpq,它可能尚未安装或未链接。如果未安装,则使用命令brew install libpq 安装它。这会安装 libpq 库。 As per the documentation

libpq 是 C 应用程序程序员到 PostgreSQL 的接口。 libpq 是一组库函数,允许客户端程序将查询传递给 PostgreSQL 后端服务器并接收这些查询的结果。

使用 brew link libpq 链接 libpq,如果这不起作用,请使用命令:brew link libpq --force。 还将以下 export PATH="/usr/local/opt/libpq/bin:$PATH" 放入您的 .zshrc 文件中。这将为libpq library 创建所有必要的链接。 现在重新启动终端或使用以下命令source ~/.zshrc。 现在使用命令pip install psycopg2。它会起作用的。 即使您在 conda 环境中工作,这也有效。注意pip install psycopg2-binary应该避免,因为as per the developers of the psycopg2 library

不鼓励在生产环境中使用 -binary 包,因为过去它们在多线程环境中被证明是不可靠的。这可能已在较新的版本中得到修复,但我从未设法重现该故障。

【讨论】:

【参考方案4】:

第 1 步:安装依赖项

sudo apt-get install build-dep python-psycopg2

第 2 步:在您的 virtualenv 中运行此命令

pip install psycopg2-binary 

参考:Fernando Munoz

【讨论】:

我不得不运行easy_install psycopg2,但你的问题引导我到了那里! 我发现我也必须sudo apt-get install libpq-dev,因为我没有在我试图安装psycopg2 的机器上安装 Postgresql。 对于 Python3 用户:安装 libpq-dev postgresql 在 Kubuntu 16.04 build-dep 选项不起作用,但 sudo apt-get install python-psycopg2 起作用 在 ubuntu 16.04 中显示 E: Unable to locate package build-dep【参考方案5】:

对于 ubuntu 上的 python3,这对我有用:

$sudo apt-get update
$sudo apt-get install libpq-dev
$sudo pip3 install psycopg2-binary

【讨论】:

【参考方案6】:
sudo pip install psycopg2-binary

【讨论】:

【参考方案7】:

当我从 Windows 10 切换到 ubuntu 时遇到了同样的问题。以下内容对我有用。在谷歌搜索并尝试了 2 小时的众多建议之后...

sudo apt-get install libpq-dev, then pip3 install psycopg2

我希望这对遇到同样问题的人有所帮助,尤其是在从 windows 操作系统切换到 linux(ubuntu) 时。

【讨论】:

【参考方案8】:

我也有同样的问题,不过这一段 sn-p 就解决了我的问题。

pip install psycopg2

【讨论】:

【参考方案9】:

尝试安装

psycopg2-二进制

pip install psycopg2-binary --user

【讨论】:

这是对我有用的唯一答案 python 3.7.3django 3.0.2 --user 是干什么用的? @MuhammadInaamMunir --user : Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on Windows. 您可以使用pip install --help查看更多信息。【参考方案10】:

正确检查您是否打开了您的 peoject 的虚拟环境,如果它处于关闭状态,则将其打开。执行以下指令:

workon <your_env_name>
python manage.py runserver

它对我有用

【讨论】:

【参考方案11】:

我遇到了同样的问题并使用以下命令解决了它:

sudo apt-get install libpq-dev
pip install psycopg2

【讨论】:

这修复了我在运行sudo apt-get install build-dep python-psycopg2 后收到的错误消息You need to install postgresql-server-dev-X.Y ...(即使我已经安装了postgresql)。【参考方案12】:

试试这些:

virtualenv -p /usr/bin/python3 test_env
source test_env/bin/activate
pip install psycopg2

运行 python 并尝试导入,如果你坚持在你的系统上安装 python try:

pip3 install psycopg2

【讨论】:

【参考方案13】:

使用psycopg2-binary 代替psycopg2。

pip install psycopg2-binary

否则您将收到以下警告:

用户警告:psycopg2 ***包将从 2.8 版重命名;为了继续从二进制安装,请改用“pip install psycopg2-binary”。详情见:http://initd.org/psycopg/docs/install.html#binary-install-from-pypi。

参考:Psycopg 2.7.4 released | Psycopg

【讨论】:

感谢这个帮助而不是其他热门答案 仅供参考 - “如果您是依赖 psycopg2 的已发布包的维护者,则不应使用 psycopg2-binary 作为模块依赖项”,请参阅:psycopg.org/docs/install.html#psycopg-vs-psycopg-binary【参考方案14】:

最近在我的生产服务器上遇到了这个问题。我已经使用

安装了 pyscopg2
sudo pip install psycopg2

它在我的本地运行良好,但让我在我的 ec2 服务器上运行。

sudo python -m pip install psycopg2

上面的命令在那里为我工作。在这里发帖以防将来对某人有所帮助。

【讨论】:

【参考方案15】:

对于 Python3

第 1 步:安装依赖项

sudo apt-get install python3 python-dev python3-dev

第 2 步:安装

pip install psycopg2

【讨论】:

【参考方案16】:

您需要安装psycopg2 模块。

在 CentOS 上: 确保已安装 Python 2.7+。如果没有,请按照以下说明操作:http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/

# Python 2.7.6:
$ wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
$ tar xf Python-2.7.6.tar.xz
$ cd Python-2.7.6
$ ./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
$ make && make altinstall
$ yum install postgresql-libs

# First get the setup script for Setuptools:
$ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py

# Then install it for Python 2.7 and/or Python 3.3:
$ python2.7 ez_setup.py

$ easy_install-2.7 psycopg2

即使这是一个 CentOS 问题,以下是 Ubuntu 的说明:

$ sudo apt-get install python3-pip python-distribute python-dev
$ easy_install psycopg2

引用:http://initd.org/psycopg/install/

【讨论】:

嗯得到ez_setup.py is deprecated and when using it setuptools will be pinned to 33.1.1【参考方案17】:

请尝试在 python 控制台上运行命令import psycopg2。如果您收到错误,请检查 python 查找安装模块的sys.pathpython-psycopg2-2.4.5-1.rhel5.x86_64 的父目录是否在sys.path 中。如果它不在 sys.path 中,则在运行 openerp 服务器之前运行 export PYTHONPATH=&lt;parent directory of python-psycopg2-2.4.5-1.rhel5.x86_64&gt;

【讨论】:

以上是关于ImportError:没有名为 psycopg2 的模块的主要内容,如果未能解决你的问题,请参考以下文章

没有名为 psycopg2 的模块和请求

psycopg2 ImportError:未定义符号:PQconninfo

ImportError:无法加载指定的对象 - psycopg2

ubuntu上跑python连接pg,报错 ImportError: No module named psycopg2

ModuleNotFoundError:运行时没有名为“psycopg2”的模块

Django,mod_wsgi,psycopg2 配置不当:加载 psycopg2 模块时出错:没有名为 _psycopg 的模块