लिनक्स पर pyodbc स्थापित करने में असमर्थ


84

मैं लिनक्स (2.6.18-164.15.1.el5.centos.plus) चला रहा हूं और pyodbc को स्थापित करने की कोशिश कर रहा हूं। मैं पाइप स्थापित pyodbc कर रहा हूं और त्रुटियों की एक बहुत लंबी सूची प्राप्त करता हूं, जो अंत में होती है

त्रुटि: कमांड 'जीसीसी' निकास स्थिति 1 के साथ विफल रही

मैंने /root/.pip/pip.log में देखा और निम्नलिखित देखा:

स्थापनाError: कमांड / usr / local / bin / python -c "import setuptools; फ़ाइल = '/ home / build / pyodbc / setup.py'; execfile ('/ home / build / pyodbc / setup.py')" install - एकल-संस्करण-बाह्य-प्रबंधित -record /tmp/pip-7MS9Vu-record/install-record.txt त्रुटि कोड के साथ विफल हुआ

किसी को भी एक समान मुद्दा pyodbc स्थापित किया है?

जवाबों:


160

उबंटू पर, आपको unixodbc-dev स्थापित करने की आवश्यकता होगी:

sudo apt-get install unixodbc-dev

इस कमांड का उपयोग करके पाइप स्थापित करें:

sudo apt-get install python-pip

एक बार स्थापित होने के बाद, आपको सफलतापूर्वक pyodbc स्थापित करने में सक्षम होना चाहिए:

pip install pyodbc

1
इससे पहले कि यह मेरे लिए काम करता है, मुझे अजगर-देवल स्थापित करने की आवश्यकता है।
माइक

Yesssss !!! यह पाँचवाँ समाधान था जिसका मैंने उपयोग किया था और जो काम किया था, धन्यवाद :)
प्रशंसक

वह काम किया! मुझे एक त्रुटि मिली "पैकेज नहीं मिल रहा है", लेकिन sudo apt-get अपडेट को पहली बार चलाने के बाद इसे ठीक कर दिया गया।
क्रिस ऐक

1
उबंटू के अतिरिक्त पायथॉन 3.7 के लिए अतिरिक्त रनsudo apt-get install python3.7-dev
मिलोस ग्रुजिक

58

मैंने अपने मुद्दे को pyodbc पर सही दिशा-निर्देशों का पालन करके हल किया - बिल्डिंग विकी जो बताता है:

लिनक्स पर, 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 distro अपग्रेड किया है?
इगोरगानापोलस्की

मैं Centos 7 और Linux 3.10.0-957.5.1.el7.x86_64 का उपयोग कर रहा हूं। वे pyodbc के साथ मुद्दों के लिए जाना जाता है?
अतिकर

21

इस प्रश्न पर एक और उत्तर जोड़ना। के लिए लिनक्स डेबियन खिंचाव रिहाई आप निम्नलिखित निर्भरता स्थापित करने की आवश्यकता होगी:

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

इससे पहले कि मैं pyodbc स्थापित कर सकता था डेबियन स्लिम छवि पर मुझे g ++ को शामिल करने की आवश्यकता थी।
Snympi

@Snympi हां, यही कारण है कि ऊपर दिए गए आदेशों में शामिल हैं apt-get install g++;)
एलेक्सिस

1
बहुत बहुत धन्यवाद, आपका जवाब मेरे डेबियन जीएनयू / लिनक्स 9 पर काम करता है, जी ++ हालांकि नगण्य है।
CK

15

किसी भी redhat संस्करण में pyodbc को स्थापित करने के लिए नीचे दिए गए चरणों का पालन करें

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


8

निम्न आदेश निष्पादित करें (सेंटोस 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 पैकेज भी स्थापित किए हैं:

  • अजगर-देव

  • tdsodbc


या यदि आप एक उबंटू पर हैं: sudo apt-get install g++उसके बाद, मैं अपने वेव में स्थापित करने में सक्षम था। धन्यवाद!
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

मुझे वह सब चाहिए था, लेकिन मुझे भी अजगर की जरूरत है,

sudo yum install python-devel

1

ज़िप फ़ाइल से pyobdc को कैसे स्थापित करें? PyODBC का उपयोग करके Ubuntu से Microsoft Sql सर्वर से कैसे कनेक्ट करें :

डाउनलोड स्रोत बनाम apt-get

उबंटू में apt-get उपयोगिता pyODBC का एक संस्करण है। (संस्करण 2.1.7)।
हालांकि, यह बुरी तरह से पुराना है (2.1.7 बनाम 3.0.6) और यह यूनिक्सोडबीसी और फ्रीटेड के नए संस्करणों के साथ अच्छी तरह से काम नहीं कर सकता है।
यह विशेष रूप से महत्वपूर्ण है यदि आप Microsoft Sql सर्वर (2008 बाद) के बाद के संस्करणों से कनेक्ट करने का प्रयास कर रहे हैं।
यह अनुशंसा की जाती है कि जब आप apt-get में संकुल पर निर्भर होने के बजाय नवीनतम Microsoft Sql सर्वर के साथ काम कर रहे हों तो आप unixODBC, freetds और pyODBC के नवीनतम संस्करणों का उपयोग करें।


1
संकलन समाप्त हुआ। त्रुटि: कमांड 'i686-linuxgnu-gccc' निकास स्थिति 1 के साथ विफल हुआ
jarppa79

चेतावनी: कमांड लाइन विकल्प ä-Wstrict-prototypes 'c / Objc के लिए मान्य है, लेकिन C ++ के लिए नहीं [डिफ़ॉल्ट रूप से सक्षम]
jarppa79

apt-get install एप्टीट्यूड एप्टीट्यूड इनस्टॉल g ++ apt-get install python-dev python
./setup.py

1

मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन pyodbcअनुचर के पास GitHub Repo है

मुझे FreeTDS को स्थापित करने और कॉन्फ़िगर फ़ाइलों को स्थापित करने के लिए एक बहुत अच्छा उदाहरण मिला ।


GitHub डॉक्स पर निर्देशों का पालन करना मुझे हमेशा सबसे अच्छा विकल्प लगता है। CentOs7 के लिए फरवरी, 2018 तक (उनके लिंक पर सभी जायके हैं) वे कहते हैं:

# 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

मेरे मामले में ( अमेज़ॅन लिनक्स एएमआई ) उपरोक्त में से किसी ने भी काम नहीं किया। निम्नलिखित कार्य ( यहाँ से विचार ):

  • फ़ाइल का पथ खोजें 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अपने पथ में निर्देशिका में से एक में एक लिंक रखो : sudo ln -s /PATH/TO/cc1plus /DIRinPATH/
    उदाहरण के लिए मेरे मामले में:
    sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/bin/

1

आर्कलिनक्स / मंज़रो के लिए:

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

सेंटो के संस्करण के आधार पर पैकेज बदल सकता है, आप इस तरह खोज सकते हैं:

yum search unixodbc

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.