Невозможно установить pyodbc в Linux


84

Я использую Linux (2.6.18-164.15.1.el5.centos.plus) и пытаюсь установить pyodbc. Я выполняю pip install pyodbc и получаю очень длинный список ошибок, которые заканчиваются на

ошибка: команда 'gcc' завершилась неудачно со статусом выхода 1

Я заглянул в /root/.pip/pip.log и увидел следующее:

Ошибка установки: команда / usr / local / bin / python -c "import setuptools; file = '/ home / build / pyodbc / setup.py'; execfile ('/ home / build / pyodbc / setup.py')" install - -single-version-external-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, прежде чем это сработало для меня.
Майк,

Дасссс !!! это пятое решение, которое я использовал, и тот, который сработал, спасибо :)
Фанни,

Это сработало! Я получил сообщение об ошибке «Не могу найти пакет», но запуск sudo apt-get update сначала исправил его.
ChrisE 03

1
Для python 3.7 на Ubuntu дополнительно запуститеsudo apt-get install python3.7-dev
Milos

58

Я решил свою проблему, выполнив правильные указания на pyodbc - Building wiki, в которых говорится:

В Linux pyodbc обычно создается с использованием заголовков unixODBC, поэтому вам потребуется установить unixODBC и его заголовки. В системе RedHat / CentOS / Fedora это означает, что вам потребуется установить unixODBC-devel:

yum install unixODBC-devel

Это не для меня ... SyntaxError: недопустимый файл синтаксиса "/ usr / libexec / urlgrabber-ext-down", строка 28, кроме OSError, e: ^ SyntaxError: недопустимый синтаксис Выход при отмене пользователем
famargar

@famargar Вы обновили дистрибутив Linux?
IgorGanapolsky

Я использую Centos 7 и Linux 3.10.0-957.5.1.el7.x86_64. Известно ли, что у них есть проблемы с pyodbc?
famargar

21

Добавляем еще один ответ на этот вопрос. Для выпуска Linux Debian Stretch вам потребуется установить следующие зависимости:

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

В образ Debian Slim мне нужно было включить g ++, прежде чем я смогу установить pyodbc.
Snympi

@Snympi Ага, вот почему приведенные выше команды включают apt-get install g++;)
Alexis.Rolland

1
Большое вам спасибо, ваш ответ работает на моем Debian GNU / Linux 9, хотя g ++ незначителен.
CK

15

Выполните следующие шаги, чтобы установить pyodbc в любой версии redhat

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


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

Чтобы избежать ошибки gcc в Ubuntu Linux, я сделал:

sudo aptitude install g++

Я также установил следующие 2 пакета от Synaptic:

  • python-dev

  • tdsodbc


Или, если вы используете Ubuntu: sudo apt-get install g++после этого я смог установить pip install в свой venv. Благодаря!
cheevahagadog 09

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

Согласно официальной документации Microsoft для Ubuntu 18.04, вы должны выполнить следующие команды:

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

Как насчет установки pyobdc из zip-файла? Из раздела Как подключиться к Microsoft Sql Server из Ubuntu с помощью pyODBC :

Источник загрузки vs apt-get

У утилиты apt-get в Ubuntu есть версия pyODBC. (версия 2.1.7).
Однако он сильно устарел (2.1.7 против 3.0.6) и может плохо работать с новыми версиями unixODBC и freetds.
Это особенно важно, если вы пытаетесь подключиться к более поздним версиям Microsoft Sql Server (начиная с 2008 г.).
При работе с последней версией Microsoft Sql Server рекомендуется использовать последние версии unixODBC, freetds и pyODBC вместо того, чтобы полагаться на пакеты в apt-get.


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

Я знаю, что это старый вопрос, но у сопровождающего есть pyodbcрепозиторий GitHub. .

Я также нашел очень хороший пример установки FreeTDS и настройки файлов конфигурации .


Следование инструкциям в документации GitHub всегда кажется мне лучшим вариантом. По состоянию на февраль 2018 года для 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

Привет, Шубхам, извини, я не понимаю твой вопрос. После ввода pip install pyodbc, если все остальное прошло нормально, у вас будут установлены и доступны как драйвер, так и пакет. Вы бы «просто использовали» пакет, создав объект подключения и курсор, аналогично любому другому программному доступу к БД. Вы можете посмотреть их документацию за примерами.
Майк Уильямсон

1

Я столкнулся с той же проблемой. Для python3.6.8 и ubuntu 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 )
  • Поместите ссылку 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/

1

Для archlinux / manjaro:

sudo pacman -S unixodbc

тогда:

sudo pip install pyodbc

или же:

pip install pyodbc

Вы можете обновить инструменты установки pip wheel перед установкой pyodbc (это не повлияет на установку 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.