【问题标题】:ImportError: No module named psycopg2ImportError:没有名为 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
  • 如果你得到了答案然后选择答案。

标签: python centos odoo centos5


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    3. 复制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

                    【讨论】:

                    【解决方案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;

                        【讨论】: