Pyodbc kann unter Linux nicht installiert werden


83

Ich verwende Linux (2.6.18-164.15.1.el5.centos.plus) und versuche, pyodbc zu installieren. Ich mache pip install pyodbc und bekomme eine sehr lange Liste von Fehlern, die in enden

Fehler: Befehl 'gcc' mit Exit-Status 1 fehlgeschlagen

Ich habe in /root/.pip/pip.log nachgesehen und Folgendes gesehen:

InstallationError: Befehl / usr / local / bin / python -c "setuptools importieren; file = '/ home / build / pyodbc / setup.py'; execfile ('/ home / build / pyodbc / setup.py')" install - -single-version-extern-verwaltet --record /tmp/pip-7MS9Vu-record/install-record.txt ist mit Fehlercode 1 fehlgeschlagen

Hat jemand ein ähnliches Problem bei der Installation von pyodbc gehabt?

Antworten:


155

Unter Ubuntu müssen Sie unixodbc-dev installieren:

sudo apt-get install unixodbc-dev

Installieren Sie pip mit diesem Befehl:

sudo apt-get install python-pip

Sobald dies installiert ist, sollten Sie in der Lage sein, pyodbc erfolgreich zu installieren:

pip install pyodbc

Ich musste auch Python-Devel installieren, bevor dies für mich funktionierte.
Mike

Ja !!! Dies war die fünfte Lösung, die ich verwendet habe und die funktioniert hat, danke :)
Fanny

Das hat funktioniert! Ich habe die Fehlermeldung "Paket kann nicht gefunden werden" erhalten, aber das Ausführen von sudo apt-get update hat es zuerst behoben.
ChrisE

1
Für Python 3.7 auf Ubuntu zusätzlich laufensudo apt-get install python3.7-dev
Milos Grujic

57

Ich habe mein Problem behoben, indem ich den korrekten Anweisungen in pyodbc - Building wiki gefolgt bin, in denen es heißt:

Unter Linux wird pyodbc normalerweise mit den unixODBC-Headern erstellt. Daher müssen Sie unixODBC und seine Header installieren. Auf einer RedHat / CentOS / Fedora-Box bedeutet dies, dass Sie unixODBC-devel installieren müssen:

yum install unixODBC-devel

Es schlägt für mich fehl ... SyntaxError: ungültige Syntaxdatei "/ usr / libexec / urlgrabber-ext-down", Zeile 28 außer OSError, e: ^ SyntaxError: ungültige Syntax Beenden beim Abbrechen des Benutzers
famargar

@famargar Du hast deine Linux Distribution aktualisiert?
Igor Ganapolsky

Ich verwende Centos 7 und Linux 3.10.0-957.5.1.el7.x86_64. Ist bekannt, dass sie Probleme mit pyodbc haben?
Famargar

17

Hinzufügen einer weiteren Antwort auf diese Frage. Für Linux Debian Stretch müssen Sie die folgenden Abhängigkeiten installieren:

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

Auf dem Debian Slim-Image musste ich g ++ einfügen, bevor ich pyodbc installieren konnte.
Snympi

@ Snympi Ja, deshalb sind die obigen Befehle enthalten apt-get install g++;)
Alexis.Rolland

1
Vielen Dank, Ihre Antwort funktioniert auf meinem Debian GNU / Linux 9, das G ++ ist jedoch vernachlässigbar.
CK

15

Führen Sie die folgenden Schritte aus, um pyodbc in einer beliebigen Redhat-Version zu installieren

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

10

Kämpfte mit dem gleichen Problem

Nach dem Rennen: sudo apt-get install unixodbc-dev

Ich konnte pyodbc pip installieren


Dies funktionierte bei mir mit Python 3.7 auf dem Bild von circleci.
Archae0pteryx

8

Führen Sie die folgenden Befehle aus (getestet auf 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

Ich habe diese Frage mehrmals referenziert und tatsächlich die Antwort gefunden, nach der ich hier gesucht habe: pyodbc wiki

Um einen gcc-Fehler unter Ubuntu Linux zu vermeiden, habe ich Folgendes getan:

sudo aptitude install g++

Ich habe auch die folgenden 2 Pakete von Synaptic installiert:

  • Python-Dev

  • tdsodbc


Oder wenn Sie auf einem Ubuntu sind: sudo apt-get install g++Danach konnte ich die Installation in meinem Venv durchführen. Vielen Dank!
Cheevahagadog

3

Ich hatte das gleiche Problem unter CentOS 5.5

Zusätzlich zur Installation von unixODBC-devel musste ich auch gcc-c ++ installieren

yum install gcc-c++

3

Eine einfache Möglichkeit, pyodbc zu installieren, ist die Verwendung von 'conda'. As conda installiert automatisch die erforderlichen Abhängigkeiten einschließlich unixodbc.

conda --ugrade all (Optional)

dann conda install pyodbc

Folgende Pakete werden installiert:

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

Laut offiziellen Microsoft-Dokumenten für Ubuntu 18.04 sollten Sie die folgenden Befehle ausführen:

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

Wenn Sie python3.7 verwenden, ist es sehr wichtig, Folgendes auszuführen:

sudo apt-get install python3.7-dev


1

Ich brauchte das alles, aber ich musste auch Python Devel installieren:

sudo yum install python-devel

1

Wie wäre es mit der Installation von pyobdc aus einer Zip-Datei? Von So stellen Sie mit pyODBC eine Verbindung zu Microsoft SQL Server von Ubuntu her :

Quelle herunterladen vs apt-get

Das apt-get-Dienstprogramm in Ubuntu verfügt über eine Version von pyODBC. (Version 2.1.7).
Es ist jedoch sehr veraltet (2.1.7 vs 3.0.6) und funktioniert möglicherweise nicht gut mit den neueren Versionen von unixODBC und freetds.
Dies ist besonders wichtig, wenn Sie versuchen, eine Verbindung zu späteren Versionen von Microsoft SQL Server (ab 2008) herzustellen.
Es wird empfohlen, die neuesten Versionen von unixODBC, freetds und pyODBC zu verwenden, wenn Sie mit dem neuesten Microsoft SQL Server arbeiten, anstatt sich auf Pakete in apt-get zu verlassen.


1
Kompilierung beendet. Fehler: Befehl 'i686-linuxgnu-gccc' fehlgeschlagen mit Exit-Status 1
jarppa79

Warnung: Die Befehlszeilenoption ä-Wstrict-prototypes 'gilt für c / Objc, jedoch nicht für C ++ [standardmäßig aktiviert]
jarppa79

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

1

Ich weiß, dass dies eine alte Frage ist, aber der Betreuer hat ein pyodbcGitHub-Repo .

Ich habe auch ein sehr gutes Beispiel für die Installation von FreeTDS und das Einrichten der Konfigurationsdateien gefunden .


Das Befolgen der Anweisungen in den GitHub-Dokumenten scheint mir immer die beste Option zu sein. Ab Februar 2018 sagen sie für CentOs7 (sie haben alle Geschmacksrichtungen unter dem Link):

# 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

Hallo Shubham, es tut mir leid, ich verstehe deine Frage nicht. Unter der pip install pyodbcAnnahme, dass alles andere in Ordnung ist, haben Sie nach der Eingabe sowohl den Treiber als auch das Paket installiert und sind verfügbar. Sie würden das Paket "einfach verwenden" und das Verbindungsobjekt und den Cursor ähnlich wie bei jedem anderen programmgesteuerten Zugriff auf eine Datenbank erstellen. Beispiele finden Sie in der Dokumentation .
Mike Williamson

1

Ich stand vor dem gleichen Problem. Für Python3.6.8 und Ubuntu 16.04 hat mir keiner der oben genannten Punkte nicht geholfen.

sudo apt-get install python3.6-dev

Dies löste mein Problem.


1

In meinem Fall ( Amazon Linux AMI ) hat keines der oben genannten Verfahren funktioniert. Folgendes hat funktioniert (Idee von hier ):

  • Suchen Sie den Pfad zur Datei cc1plus. Für mich war es in /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus. Für Sie kann es etwas variieren. Versuchen Sie ls -l /usr/libexec/gcc, den richtigen Verzeichnisnamen zu finden, und fahren Sie fort.
  • Finden Sie Verzeichnisse auf Ihrem Weg: echo $PATH(für mich war es /sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin)
  • Fügen Sie einen Link zu cc1pluseinem der Verzeichnisse in Ihrem PFAD ein: sudo ln -s /PATH/TO/cc1plus /DIRinPATH/
    Zum Beispiel in meinem Fall:
    sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/bin/

1

Für Archlinux / Manjaro:

sudo pacman -S unixodbc

dann:

sudo pip install pyodbc

oder:

pip install pyodbc

Sie können Ihre Pip Wheel Setuptools vor der Installation von pyodbc aktualisieren (dies hat keine Auswirkungen auf die pyodbc-Installation), und zwar auch mit:

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

oder

python -m pip install --upgrade pip wheel setuptools

0

Ich habe das benutzt:

yum install unixODBC.x86_64

Abhängig von der Version von Centos, die das Paket ändern könnte, können Sie folgendermaßen suchen:

yum search unixodbc

0

Diese 2 Befehle von hier haben für mich in RHEL 8 funktioniert

sudo dnf install redhat-rpm-config gcc-c++ python3-devel unixODBC-devel
pip3 install --user pyodbc
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.