Linux에 pyodbc를 설치할 수 없습니다.


84

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를 설치하는 데 비슷한 문제가 있습니까?

답변:


161

Ubuntu에서는 unixodbc-dev를 설치해야합니다.

sudo apt-get install unixodbc-dev

다음 명령을 사용하여 pip를 설치합니다.

sudo apt-get install python-pip

일단 설치되면 pyodbc를 성공적으로 설치할 수 있습니다.

pip install pyodbc

1
이것이 나를 위해 일하기 전에 python-devel도 설치해야했습니다.
Mike

네 !!! 이것이 제가 사용한 다섯 번째 솔루션이었고 효과가 있었던 솔루션이었습니다. 감사합니다 :)
fanny

작동했습니다! "패키지를 찾을 수 없습니다"라는 오류가 발생했지만 먼저 sudo apt-get update를 실행하면 문제가 해결되었습니다.
ChrisE

1
Ubuntu의 python 3.7의 경우 추가로 실행sudo apt-get install python3.7-dev
Milos Grujic 2019 년

58

pyodbc-Building wiki 에 대한 올바른 지침에 따라 문제를 해결했습니다 .

Linux에서 pyodbc는 일반적으로 unixODBC 헤더를 사용하여 빌드되므로 unixODBC 및 해당 헤더가 설치되어 있어야합니다. RedHat / CentOS / Fedora 상자에서 이것은 unixODBC-devel을 설치해야 함을 의미합니다 :

yum install unixODBC-devel

나를 위해 실패합니다 ... 구문 오류 : 잘못된 구문 파일 "/ usr / libexec / urlgrabber-ext-down", 28 행 OSError 제외, e : ^ 구문 오류 : 잘못된 구문 사용자 취소시 종료
famargar

@famargar Linux 배포판을 업그레이드 했습니까?
IgorGanapolsky

Centos 7 및 Linux 3.10.0-957.5.1.el7.x86_64를 사용하고 있습니다. pyodbc에 문제가있는 것으로 알려져 있습니까?
famargar 2010 년

21

이 질문에 대한 답을 하나 더 추가합니다. 들어 데비안 리눅스 스트레치 릴리스 다음 종속성을 설치해야합니다 :

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

Debian Slim 이미지에서 pyodbc를 설치하기 전에 g ++를 포함해야했습니다.
Snympi

명령이 위의 포함 이유 @Snympi 그래, apt-get install g++)
Alexis.Rolland

1
감사합니다. 귀하의 답변은 제 Debian GNU / Linux 9에서 작동하지만 g ++는 무시해도 좋습니다.
CK

15

모든 redhat 버전에서 pyodbc를 설치하려면 아래 단계를 따르십시오.

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

11

같은 문제로 어려움을 겪음

실행 후 : sudo apt-get install unixodbc-dev

나는 pyodbc를 설치할 수 있었다.


이것은 circleci의 이미지에서 python 3.7에서 저에게 효과적이었습니다.
archae0pteryx

8

다음 명령을 실행합니다 (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

6

나는이 질문을 여러 번 언급했고 실제로 내가 찾고 있던 답을 찾았다 : pyodbc wiki

Ubuntu Linux에서 gcc 오류를 방지하기 위해 다음을 수행했습니다.

sudo aptitude install g++

또한 Synaptic에서 다음 2 개의 패키지를 설치했습니다.

  • python-dev

  • tdsodbc


또는 Ubuntu를 사용하는 경우 : sudo apt-get install g++그 후 Venv에 pip 설치를 수행 할 수있었습니다. 감사!
cheevahagadog

3

CentOS 5.5에서 동일한 문제가 발생했습니다.

unixODBC-devel을 설치하는 것 외에도 gcc-c ++를 설치해야했습니다.

yum install gcc-c++

3

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


3

Ubuntu 18.04에 대한 공식 Microsoft 문서 에 따르면 다음 명령을 실행해야합니다.

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


1

나는 모든 것이 필요했지만 python devel도 설치해야했습니다.

sudo yum install python-devel

1

zip 파일에서 pyobdc를 설치하는 것은 어떻습니까? 에서 어떻게 pyODBC를 사용하여 우분투에서 Microsoft SQL Server를 연결합니다 :

소스 다운로드 vs apt-get

Ubuntu의 apt-get 유틸리티에는 pyODBC 버전이 있습니다. (버전 2.1.7).
그러나 이는 매우 오래되었으며 (2.1.7 대 3.0.6) 최신 버전의 unixODBC 및 freetd에서는 제대로 작동하지 않을 수 있습니다.
이는 이후 버전의 Microsoft Sql Server (2008 이상)에 연결하려는 경우 특히 중요합니다.
apt-get의 패키지에 의존하는 대신 최신 Microsoft SQL Server로 작업 할 때 최신 버전의 unixODBC, freetds 및 pyODBC를 사용하는 것이 좋습니다.


1
컴파일이 종료되었습니다. 오류 : 'i686-linuxgnu-gccc'명령이 종료 상태 1로 실패했습니다
jarppa79

경고 : 명령 줄 옵션 ä-Wstrict-prototypes '는 c / Objc에는 유효하지만 C ++에는 유효하지 않습니다. [기본적으로 활성화 됨]
jarppa79

apt-get install aptitude aptitude install g ++ apt-get install python-dev python ./setup.py install
jarppa79

1

나는 이것이 오래된 질문이라는 것을 알고 있지만 관리자에게는 pyodbcGitHub Repo가 있습니다.

또한 FreeTDS 설치 및 구성 파일 설정에 대한 아주 좋은 예를 찾았 습니다 .


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다른 모든 것이 정상이라고 가정하면 드라이버와 패키지가 모두 설치되고 사용 가능합니다. 패키지를 "간단히 사용"하여 DB에 대한 다른 프로그래밍 방식 액세스와 유사한 연결 개체 및 커서를 만듭니다. 예제 에 대한 설명서 를 볼 수 있습니다 .
Mike Williamson

1

나는 같은 문제에 직면했다. python3.6.8 및 우분투 16.04의 경우 위의 어느 것도 도움이되지 않았습니다.

sudo apt-get install python3.6-dev

이것은 내 문제를 해결했습니다.


1

제 경우에는 ( Amazon Linux AMI ) 위의 어느 것도 작동하지 않았습니다. 다음이 작동했습니다 ( 여기 에서 아이디어 ).

  • 파일 경로를 찾으십시오 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 )
  • cc1plusPATH의 디렉토리 중 하나에 링크를 넣으십시오 . sudo ln -s /PATH/TO/cc1plus /DIRinPATH/
    예를 들어 제 경우에는 다음과 같습니다.
    sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/bin/

1

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

0

나는 이것을 사용했다 :

yum install unixODBC.x86_64

centos 버전에 따라 패키지를 변경할 수 있으며 다음과 같이 검색 할 수 있습니다.

yum search unixodbc

0

여기 에서이 두 명령은 RHEL 8에서 저에게 효과적이었습니다.

sudo dnf install redhat-rpm-config gcc-c++ python3-devel unixODBC-devel
pip3 install --user pyodbc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.