Неможливо встановити pyodbc на Linux


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 - Помилка -один-версії-із зовнішнього управління --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

1
Для python 3.7 на Ubuntu додатково запустітьsudo apt-get install python3.7-dev
Мілош Груїч

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?
ІгорГанапольський

Я використовую 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 Так, ось чому наведені вище команди включають 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

11

Боровся з тим самим питанням

Після запуску: sudo apt-get install unixodbc-dev

Я зміг pip встановити pyodbc


Це працювало для мене з python 3.7 на зображенні circleci.
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

Щоб уникнути помилки gcc в Ubuntu Linux, я зробив:

sudo aptitude install g++

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

  • python-dev

  • tdsodbc


Або якщо ви перебуваєте на Ubuntu: sudo apt-get install g++Після цього я зміг встановити pip у свій venv. Дякую!
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

Згідно з офіційними документами 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 :

Джерело завантаження проти apt-get

Утиліта apt-get в Ubuntu має версію pyODBC. (версія 2.1.7).
Однак він дуже застарілий (2.1.7 проти 3.0.6) і може не працювати добре з новими версіями unixODBC та freetds.
Це особливо важливо, якщо ви намагаєтесь підключитися до пізніших версій Microsoft Sql Server (від 2008 року).
Рекомендується використовувати найновіші версії unixODBC, freetds та pyODBC під час роботи з останньою версією Microsoft Sql Server, а не покладатися на пакети в 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

1

Я знаю, що це старе запитання, але у супровідника є pyodbcGitHub Repo .

Я також знайшов дуже хороший приклад для встановлення 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, припускаючи, що все інше пішло нормально, у вас буде встановлений і доступний і драйвер, і пакет. Ви "просто використовуєте" пакет, створюючи об'єкт підключення та курсор, подібний до будь-якого іншого програмного доступу до БД. Приклади можна переглянути в їх документації .
Mike Williamson,

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

Ви можете оновити налаштування інструментів колеса піп перед встановленням 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.