Linux'a pyodbc yüklenemiyor


84

Linux (2.6.18-164.15.1.el5.centos.plus) çalıştırıyorum ve pyodbc'yi kurmaya çalışıyorum. Pip install pyodbc yapıyorum ve çok uzun bir hata listesi alıyorum.

hata: 'gcc' komutu çıkış durumu 1 ile başarısız oldu

/Root/.pip/pip.log dosyasına baktım ve şunları gördüm:

Kurulum Hatası : Command / usr / local / bin / python -c "import setuptools; file = '/ home / build / pyodbc / setup.py'; execfile ('/ home / build / pyodbc / setup.py')" install - -single-version-harici-yönetilen --record /tmp/pip-7MS9Vu-record/install-record.txt hata kodu 1 ile başarısız oldu

Pyodbc'yi kuran benzer bir sorunu olan var mı?

Yanıtlar:


161

Ubuntu'da, unixodbc-dev'i kurmanız gerekir:

sudo apt-get install unixodbc-dev

Bu komutu kullanarak pip'i kurun:

sudo apt-get install python-pip

Bir kez kurulduktan sonra, pyodbc'yi başarıyla kurabilmelisiniz:

pip install pyodbc

1
Bu benim için çalışmadan önce python-devel'i de yüklemem gerekiyordu.
Mike

Evvet !!! Bu kullandığım beşinci çözüm ve çalışmış biri, teşekkürler :) oldu
fanny

İşe yaradı! "Paket bulunamıyor" hatası aldım, ancak önce sudo apt-get güncellemesini çalıştırmak sorunu çözdü.
ChrisE

1
Ubuntu'da python 3.7 için ek olarak çalıştırınsudo apt-get install python3.7-dev
Milos Grujic

58

Pyodbc - Building wiki'deki doğru yönergeleri izleyerek sorunumu çözdüm :

Linux'ta pyodbc genellikle unixODBC başlıkları kullanılarak oluşturulur, bu nedenle unixODBC ve başlıklarının kurulu olması gerekir. Bir RedHat / CentOS / Fedora kutusunda bu, unixODBC-devel'i kurmanız gerektiği anlamına gelir:

yum install unixODBC-devel

Benim için başarısız oluyor ... SyntaxError: geçersiz sözdizimi Dosya "/ usr / libexec / urlgrabber-ext-down", satır 28 hariç OSError, e: ^ SyntaxError: geçersiz sözdizimi Kullanıcı
iptalinde çıkış

@famargar Linux dağıtımınızı yükselttiniz mi?
IgorGanapolsky

Centos 7 ve Linux 3.10.0-957.5.1.el7.x86_64 kullanıyorum. Pyodbc ile sorunları olduğu biliniyor mu?
famargar

21

Bu soruya bir cevap daha ekleniyor. For Linux Debian Stretch sürümü aşağıdaki bağımlılıkları yüklemek gerekir:

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

Debian Slim imajına pyodbc'yi kurmadan önce g ++ eklemem gerekiyordu.
Snympi

@Snympi Evet, bu yüzden yukarıdaki komutlar şunları içerir apt-get install g++;)
Alexis.Rolland

1
Çok teşekkür ederim, cevabınız Debian GNU / Linux 9'um üzerinde çalışıyor, yine de g ++ önemsiz.
CK

15

Herhangi bir redhat sürümünde pyodbc yüklemek için aşağıdaki adımları izleyin

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

11

Aynı sorunla mücadele etti

Koşudan sonra: sudo apt-get install unixodbc-dev

Pyodbc'yi kurmayı başardım


Bu benim için circleci'nin görüntüsünde python 3.7 ile çalıştı.
archae0pteryx

8

Aşağıdaki komutları yürütün (centos 6.5'te test edilmiştir):

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

6

Bu soruya birkaç kez başvurdum ve burada aradığım cevabı bulmaya devam ettim: pyodbc wiki

Ubuntu Linux'ta gcc hatasını önlemek için şunu yaptım:

sudo aptitude install g++

Ayrıca Synaptic'ten aşağıdaki 2 paketi kurdum:

  • python-dev

  • tdsodbc


Veya bir Ubuntu'daysanız: sudo apt-get install g++Bundan sonra, venv'ime yükleme yapabildim. Teşekkürler!
cheevahagadog

3

CentOS 5.5'te de aynı sorunu yaşadım

UnixODBC-devel'i kurmanın yanı sıra gcc-c ++ 'ı da kurmam gerekiyor

yum install gcc-c++

3

Pyodbc'yi kurmanın kolay bir yolu 'conda' kullanmaktır. Conda, unixodbc dahil olmak üzere gerekli bağımlılıkları otomatik olarak yükler.

conda --ugrade all (isteğe bağlı)

sonra conda install pyodbc

aşağıdaki paketleri kuracaktır:

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 için resmi Microsoft belgelerine göre, sonraki komutları çalıştırmalısınız:

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 kullanıyorsanız, çalıştırmanız çok önemlidir:

sudo apt-get install python3.7-dev


1

Bunların hepsine ihtiyacım vardı, ancak ayrıca python devel yazılımının yüklenmesine de ihtiyacım vardı

sudo yum install python-devel

1

Pyobdc'yi zip dosyasından yüklemeye ne dersiniz? Gönderen How pyodbc kullanarak Ubuntu Microsoft SQL sunucusuna bağlanmak için :

Kaynak vs apt-get indir

Ubuntu'daki apt-get yardımcı programının bir pyODBC sürümü var. (sürüm 2.1.7).
Ancak, kötü bir şekilde güncelliğini yitirmiştir (2.1.7'ye karşı 3.0.6) ve unixODBC ve freetds'in yeni sürümleriyle iyi çalışmayabilir.
Bu, özellikle Microsoft Sql Server'ın (2008'den itibaren) sonraki sürümlerine bağlanmaya çalışıyorsanız önemlidir.
Apt-get'deki paketlere güvenmek yerine en son Microsoft Sql Sunucusu ile çalışırken unixODBC, freetds ve pyODBC'nin en son sürümlerini kullanmanız önerilir.


1
derleme sonlandırıldı. hata: 'i686-linuxgnu-gccc' komutu 1 çıkış durumu ile başarısız oldu
jarppa79

Uyarı: Komut satırı seçeneği ä-Wstrict-prototipler c / objc için değil C için geçerlidir ++ [varsayılan olarak etkin]
jarppa79

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

1

Bunun eski bir soru olduğunu biliyorum, ancak geliştiricinin bir pyodbcGitHub Repo'su var .

Ayrıca FreeTDS'yi yüklemek ve yapılandırma dosyalarını ayarlamak için çok iyi bir örnek buldum .


GitHub belgelerindeki talimatları takip etmek bana her zaman en iyi seçenek gibi görünüyor. Şubat 2018 itibariyle, CentOs7 için (bağlantıda tüm lezzetleri var) diyorlar:

# 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

Merhaba Shubham, üzgünüm, sorunuzu anlamadım. pip install pyodbcYazdıktan sonra , her şeyin yolunda gittiğini varsayarak, hem sürücüye hem de pakete sahip olacaksınız ve kullanılabilir durumda olacaksınız. Paketi "basitçe kullanırsınız", bağlantı nesnesini ve imleci bir DB'ye diğer programlı erişime benzer şekilde yaratırsınız. Örnekler için belgelerine bakabilirsiniz .
Mike Williamson

1

Ben de aynı sorunla karşılaştım. Python3.6.8 ve ubuntu 16.04 için yukarıdakilerin hiçbiri bana yardımcı olmadı.

sudo apt-get install python3.6-dev

Bu benim sorunumu çözdü.


1

Benim durumumda ( Amazon Linux AMI ) yukarıdakilerin hiçbiri işe yaramadı. Aşağıdakiler işe yaradı ( buradan fikir ):

  • Dosyanın yolunu bulun cc1plus. Benim için içindeydi /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus. Sizin için biraz değişebilir. ls -l /usr/libexec/gccUygun dizin adını bulmaya çalışın ve devam edin.
  • Yolunuzdaki dizinleri bulun: echo $PATH(benim için öyleydi /sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin)
  • PATH'inizdeki cc1plusdizinlerden birine bir bağlantı koyun : sudo ln -s /PATH/TO/cc1plus /DIRinPATH/
    Örneğin benim durumumda:
    sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/bin/

1

Archlinux / manjaro için:

sudo pacman -S unixodbc

sonra:

sudo pip install pyodbc

veya:

pip install pyodbc

Pyodbc'yi kurmadan önce pip tekerlek kurulum araçlarınızı yükseltebilirsiniz (pyodbc kurulumunu etkilemez) ayrıca:

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

veya

python -m pip install --upgrade pip wheel setuptools

0

Bunu kullandım:

yum install unixODBC.x86_64

Centos sürümüne bağlı olarak paketi değiştirebilir, şöyle arama yapabilirsiniz:

yum search unixodbc

0

Buradan gelen bu 2 komut benim için RHEL 8'de çalıştı

sudo dnf install redhat-rpm-config gcc-c++ python3-devel unixODBC-devel
pip3 install --user pyodbc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.