【问题标题】:Unable to install pyodbc on Linux无法在 Linux 上安装 pyodbc
【发布时间】:2011-02-26 23:15:37
【问题描述】:

我正在运行 Linux (2.6.18-164.15.1.el5.centos.plus) 并尝试安装 pyodbc。我正在做 pip install pyodbc 并得到一个很长的错误列表,以

结尾

错误:命令“gcc”失败,退出状态为 1

我查看了 /root/.pip/pip.log 并看到以下内容:

InstallationError: Command /usr/local/bin/python -c "import setuptools; file='/home/build/pyodbc/setup.py'; execfile('/home/build/ pyodbc/setup.py')" install --single-version-externally-managed --record /tmp/pip-7MS9Vu-record/install-record.txt 失败,错误代码为 1

有人在安装 pyodbc 时遇到过类似的问题吗?

【问题讨论】:

    标签: python linux centos pyodbc


    【解决方案1】:

    我按照pyodbc - Building wiki 上的正确指示解决了我的问题,其中指出:

    在 Linux 上,pyodbc 通常是使用 unixODBC 头文件构建的,因此您需要安装 unixODBC 及其头文件。在 RedHat/CentOS/Fedora 机器上,这意味着您需要安装 unixODBC-devel:

    yum install unixODBC-devel
    

    【讨论】:

    • 对我来说失败了...SyntaxError: invalid syntax File "/usr/libexec/urlgrabber-ext-down",第 28 行,除了 OSError,e: ^ SyntaxError: invalid syntax Exiting on user cancel
    • @famargar 你升级了你的 Linux 发行版?
    • 我使用的是 Centos 7 和 Linux 3.10.0-957.5.1.el7.x86_64。是否知道他们对 pyodbc 有问题?
    【解决方案2】:

    我在 CentOS 5.5 上遇到了同样的问题

    除了安装 unixODBC-devel 我还必须安装 gcc-c++

    yum install gcc-c++
    

    【讨论】:

      【解决方案3】:

      在 Ubuntu 上,您需要安装 unixodbc-dev:

      sudo apt-get install unixodbc-dev
      

      使用以下命令安装 pip:

      sudo apt-get install python-pip
      

      一旦安装好了,你应该可以成功安装pyodbc了:

      pip install pyodbc
      

      【讨论】:

      • 在这对我有用之前,我也需要安装 python-devel。
      • 是的!这是我使用的第五个解决方案,也是一个有效的解决方案,谢谢 :)
      • 成功了!我收到一个错误“找不到包”,但首先运行 sudo apt-get update 修复了它。
      • 对于 Ubuntu 上的 python 3.7 额外运行 sudo apt-get install python3.7-dev
      【解决方案4】:

      我已经多次引用这个问题,并继续在这里找到我正在寻找的答案: pyodbc wiki

      为了避免在 Ubuntu Linux 上出现 gcc 错误,我做了:

      sudo aptitude install g++
      

      我还从 Synaptic 安装了以下 2 个软件包:

      • python开发

      • tdsodbc

      【讨论】:

      • 或者如果你在 Ubuntu 上:sudo apt-get install g++ 之后,我可以将 pip 安装到我的 venv 中。谢谢!
      【解决方案5】:

      我需要所有这些,但我还需要安装 python devel:

      sudo yum install python-devel
      

      【讨论】:

        【解决方案6】:

        从 zip 文件安装 pyobdc 怎么样?来自How to connect to Microsoft Sql Server from Ubuntu using pyODBC

        下载源码 vs apt-get

        Ubuntu 中的 apt-get 实用程序确实有一个 pyODBC 版本。 (版本 2.1.7)。
        但是,它已经严重过时(2.1.7 与 3.0.6),并且可能无法与较新版本的 unixODBC 和 freetds 一起使用。
        如果您尝试连接到更高版本的 Microsoft Sql Server(2008 及更高版本),这一点尤其重要。
        建议您在使用最新的 Microsoft Sql Server 时使用最新版本的 unixODBC、freetds 和 pyODBC,而不是依赖 apt-get 中的包。

        【讨论】:

        • 编译终止。错误:命令“i686-linuxgnu-gccc”失败,退出状态为 1
        • 警告:命令行选项ä-Wstrict-prototypes'对c/Objc有效,但对C++无效[默认启用]
        • apt-get install aptitude aptitude install g++ apt-get install python-dev python ./setup.py install
        【解决方案7】:

        执行以下命令(在centos 6.5上测试):

        yum install install unixodbc-dev
        yum install gcc-c++
        yum install python-devel
        pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc
        

        【讨论】:

          【解决方案8】:

          按照以下步骤在任何 redhat 版本中安装 pyodbc

          yum install unixODBC unixODBC-devel
          yum install gcc-c++
          yum install python-devel
          pip install pyodbc
          

          【讨论】:

            【解决方案9】:

            我知道这是一个老问题,但维护者有一个pyodbc GitHub Repo

            我还找到了very good example for installing FreeTDS and setting up the config files


            在我看来,遵循 GitHub 文档上的说明始终是最佳选择。截至 2018 年 2 月,对于 CentOs7(他们在链接中提供了所有口味),他们说:

            # Add the RHEL 6 library for Centos-7 of MSSQL driver. Centos7 uses RHEL-6 Libraries.
            sudo su 
            curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo
            exit
            
            # Uninstall if already installed Unix ODBC driver
            sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
            
            # Install the  msodbcsql unixODBC-utf16 unixODBC-utf16-devel driver
            sudo ACCEPT_EULA=Y yum install msodbcsql
            
            #optional: for bcp and sqlcmd
            sudo ACCEPT_EULA=Y yum install mssql-tools
            echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
            echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
            source ~/.bashrc
            
            # optional: for unixODBC development headers
            sudo yum install unixODBC-devel
            
            # the Microsoft driver expects unixODBC to be here /usr/lib64/libodbc.so.1, so add soft links to the '.so.2' files
            cd /usr/lib64
            sudo ln -s libodbccr.so.2   libodbccr.so.1
            sudo ln -s libodbcinst.so.2 libodbcinst.so.1
            sudo ln -s libodbc.so.2     libodbc.so.1
            
            # Set the path for unixODBC
            export ODBCINI=/usr/local/etc/odbc.ini
            export ODBCSYSINI=/usr/local/etc
            source ~/.bashrc
            
            # Prepare a temp file for defining the DSN to your database server
            vi /home/user/odbcadd.txt
            
            [MyMSSQLServer]
            Driver      = ODBC Driver 13 for SQL Server
            Description = My MS SQL Server
            Trace       = No
            Server      = 10.100.1.10
            
            # register the SQL Server database DSN information in /etc/odbc.ini
            sudo odbcinst -i -s -f /home/user/odbcadd.txt -l
            
            # check the DSN installation with:
            odbcinst -j
            cat /etc/odbc.ini
            
            # should contain a section called [MyMSSQLServer]
            
            # install the python driver for database connection
            pip install pyodbc
            

            【讨论】:

            • 嗨,Shubham,对不起,我不明白你的问题。输入pip install pyodbc 后,假设其他一切正常,您将安装驱动程序和软件包并可用。您将“简单地使用”该包,创建连接对象和游标,类似于对数据库的任何其他编程访问。您可以查看their documentation 的示例。
            【解决方案10】:

            我用过这个:

            yum install unixODBC.x86_64
            

            根据centos的版本可能会改变包,你可以这样搜索:

            yum search unixodbc
            

            【讨论】:

              【解决方案11】:

              安装 pyodbc 的一种简单方法是使用“conda”。由于 conda 会自动安装所需的依赖项,包括 unixodbc。

              conda --ugrade all(可选)

              那么 conda install pyodbc

              它将安装以下软件包:

              libgfortran-ng: 7.2.0-hdf63c60_3 defaults mkl: 2018.0.3-1 defaults mkl_fft: 1.0.2-py36_0 conda-forge mkl_random: 1.0.1-py36_0 conda-forge numpy-base: 1.14.5-py36hdbf6ddf_0 defaults pyodbc: 4.0.17-py36_0 conda-forge unixodbc: 2.3.4-1 conda-forge

              【讨论】:

                【解决方案12】:

                遇到同样的问题

                运行后: sudo apt-get install unixodbc-dev

                我能够 pip install pyodbc

                【讨论】:

                • 这对我在 circleci 的图像上使用 python 3.7 有效。
                【解决方案13】:

                在这个问题上再添加一个答案。 对于 Linux Debian Stretch 版本,您需要安装以下依赖项:

                apt-get update
                apt-get install unixodbc-dev
                pip install pyodbc
                

                Debian Slim 上,一些用户提到他们需要添加 g++

                apt-get update
                apt-get install g++ unixodbc-dev
                pip install pyodbc
                

                【讨论】:

                • 在 Debian Slim 映像上,我需要先包含 g++,然后才能安装 pyodbc。
                • @Snympi 是的,这就是为什么上面的命令包含 apt-get install g++ ;)
                • 非常感谢,您的回答适用于我的 Debian GNU/Linux 9,不过 g++ 可以忽略不计。
                • 我还需要用于 Ubuntu 20.04 的 g++。谢谢
                【解决方案14】:

                我遇到了同样的问题。对于 python3.6.8 和 ubuntu 16.04,以上都没有帮助我。

                sudo apt-get install python3.6-dev
                

                这解决了我的问题。

                【讨论】:

                  【解决方案15】:

                  根据 Ubuntu 18.04 的 official Microsoft docs,您应该运行下一个命令:

                  sudo su 
                  curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
                  curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
                  apt-get update
                  ACCEPT_EULA=Y apt-get install msodbcsql17
                  exit
                  

                  如果你使用的是python3.7,运行很重要:

                  sudo apt-get install python3.7-dev

                  【讨论】:

                  • 谢谢。 “pip3 install pyodbc”在通过 Ubuntu 20.04 上的官方文档安装 msodbc 后工作。
                  【解决方案16】:

                  在我的情况下(Amazon Linux AMI),以上都不起作用。以下工作(来自here的想法):

                  • 找到文件cc1plus的路径。对我来说,它位于/usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus。对你来说,它可能会有所不同。尝试ls -l /usr/libexec/gcc 找到正确的目录名称并继续。
                  • 在您的路径中查找目录:echo $PATH(对我来说是/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin
                  • 将指向cc1plus 的链接放在PATH 中的一个目录中:sudo ln -s /PATH/TO/cc1plus /DIRinPATH/
                    例如在我的情况下:
                    sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/bin/

                  【讨论】:

                  • 您是否尝试过让 unixODBC+FreeTDS 在 AWS Lambda 上运行?
                  【解决方案17】:

                  here 的这 2 个命令在 RHEL 8 中为我工作

                  sudo dnf install redhat-rpm-config gcc-c++ python3-devel unixODBC-devel
                  pip3 install --user pyodbc
                  

                  【讨论】:

                    【解决方案18】:

                    对于archlinux/manjaro:

                    sudo pacman -S unixodbc
                    

                    然后:

                    sudo pip install pyodbc
                    

                    或:

                    pip install pyodbc
                    

                    您可以在安装 pyodbc 之前升级您的 pip wheel setuptools(它不会影响 pyodbc 安装)也可以:

                    sudo python -m pip install --upgrade pip wheel setuptools
                    

                    python -m pip install --upgrade pip wheel setuptools
                    

                    【讨论】:

                      猜你喜欢
                      • 2022-07-12
                      • 2015-03-17
                      • 2018-03-06
                      • 1970-01-01
                      • 2012-08-18
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多