Không thể cài đặt pyodbc trên Linux


83

Tôi đang chạy Linux (2.6.18-164.15.1.el5.centos.plus) và cố gắng cài đặt pyodbc. Tôi đang thực hiện cài đặt pip pyodbc và nhận được một danh sách rất dài các lỗi, kết thúc bằng

error: lệnh 'gcc' không thành công với trạng thái thoát 1

Tôi đã xem trong /root/.pip/pip.log và thấy như sau:

InstallError: Command / usr / local / bin / python -c "import setuptools; file = '/ home / build / pyodbc / setup.py'; executefile ('/ home / build / pyodbc / setup.py')" install - -single-version-externally-management --record /tmp/pip-7MS9Vu-record/install-record.txt không thành công với mã lỗi 1

Có ai gặp sự cố tương tự khi cài đặt pyodbc không?

Câu trả lời:


155

Trên Ubuntu, bạn sẽ cần cài đặt unixodbc-dev:

sudo apt-get install unixodbc-dev

Cài đặt pip bằng cách sử dụng lệnh này:

sudo apt-get install python-pip

sau khi được cài đặt, bạn sẽ có thể cài đặt pyodbc thành công:

pip install pyodbc

Tôi cũng cần cài đặt python-devel trước khi điều này hoạt động với tôi.
Mike

Đúng vậy !!! đây là giải pháp thứ năm tôi đã sử dụng và một trong đó làm việc, cảm ơn bạn :)
fanny

Điều đó đã hiệu quả! Tôi gặp lỗi "Không thể tìm thấy gói", nhưng chạy bản cập nhật sudo apt-get trước đã khắc phục được lỗi này.
ChrisE

1
Đối với python 3.7 trên Ubuntu chạy thêmsudo apt-get install python3.7-dev
Milos Grujic

57

Tôi đã giải quyết vấn đề của mình bằng cách làm theo các hướng dẫn chính xác trên pyodbc - Xây dựng wiki nêu rõ:

Trên Linux, pyodbc thường được tạo bằng cách sử dụng tiêu đề unixODBC, vì vậy bạn sẽ cần cài đặt unixODBC và các tiêu đề của nó. Trên hộp RedHat / CentOS / Fedora, điều này có nghĩa là bạn sẽ cần cài đặt unixODBC-devel:

yum install unixODBC-devel

Nó không cho tôi ... Lỗi Cú pháp: Tập tin cú pháp không hợp lệ "/ usr / libexec / urlgrabber-ext xuống", dòng 28 trừ OSError, e: ^ Lỗi Cú pháp: cú pháp hợp lệ Thoát khỏi trên người dùng hủy
famargar

@famargar Bạn đã nâng cấp bản phân phối Linux?
IgorGanapolsky

Tôi đang sử dụng Centos 7 và Linux 3.10.0-957.5.1.el7.x86_64. Họ được biết là có vấn đề với pyodbc?
famargar

17

Thêm một câu trả lời nữa cho câu hỏi này. Đối với bản phát hành Linux Debian Stretch, bạn cần cài đặt các phần phụ thuộc sau:

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

Trên hình ảnh Debian Slim, tôi cần thêm g ++ trước khi có thể cài đặt pyodbc.
Snympi

@Snympi Đúng, đó là lý do tại sao các lệnh trên bao gồm apt-get install g++;)
Alexis.Rolland

1
Cảm ơn bạn rất nhiều, câu trả lời của bạn hoạt động trên Debian GNU / Linux 9 của tôi, g ++ mặc dù không đáng kể.
CK

15

Làm theo các bước dưới đây để cài đặt pyodbc trong bất kỳ phiên bản redhat nào

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

10

Đấu tranh với cùng một vấn đề

Sau khi chạy: sudo apt-get install unixodbc-dev

Tôi đã có thể pip cài đặt pyodbc


Điều này làm việc cho tôi với python 3.7 trên hình ảnh của circleci.
archae0pteryx

8

Thực hiện các lệnh sau (được thử nghiệm trên 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

Tôi đã tham khảo câu hỏi này vài lần và thực sự tìm thấy câu trả lời mà tôi đang tìm kiếm ở đây: pyodbc wiki

Để tránh lỗi gcc trên Ubuntu Linux, tôi đã làm:

sudo aptitude install g++

Tôi cũng đã cài đặt 2 gói sau từ Synaptic:

  • python-dev

  • tdsodbc


Hoặc nếu bạn đang sử dụng Ubuntu: sudo apt-get install g++Sau đó, tôi đã có thể pip cài đặt vào venv của mình. Cảm ơn!
cheevahagadog

3

Tôi đã gặp vấn đề tương tự trên CentOS 5.5

Ngoài việc cài đặt unixODBC-devel, tôi cũng phải cài đặt gcc-c ++

yum install gcc-c++

3

Một cách dễ dàng để cài đặt pyodbc là sử dụng 'conda'. Như conda tự động cài đặt các phụ thuộc bắt buộc bao gồm unixodbc.

conda --ugrade all (không bắt buộc)

sau đó conda install pyodbc

nó sẽ cài đặt các gói sau:

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

Theo tài liệu chính thức của Microsoft cho Ubuntu 18.04, bạn nên chạy các lệnh tiếp theo:

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

Nếu bạn đang sử dụng python3.7, điều rất quan trọng là phải chạy:

sudo apt-get install python3.7-dev


1

Tôi cần tất cả những thứ đó, nhưng tôi cũng cần cài đặt python devel:

sudo yum install python-devel

1

Làm thế nào về cài đặt pyobdc từ tệp zip? Từ Cách kết nối với Microsoft Sql Server từ Ubuntu bằng pyODBC :

Tải xuống nguồn vs apt-get

Tiện ích apt-get trong Ubuntu có phiên bản pyODBC. (phiên bản 2.1.7).
Tuy nhiên, nó rất lỗi thời (2.1.7 so với 3.0.6) và có thể không hoạt động tốt với các phiên bản mới hơn của unixODBC và freetds.
Điều này đặc biệt quan trọng nếu bạn đang cố gắng kết nối với các phiên bản mới hơn của Microsoft Sql Server (2008 trở đi).
Bạn nên sử dụng phiên bản mới nhất của unixODBC, freetds và pyODBC khi làm việc với Microsoft Sql Server mới nhất thay vì dựa vào các gói trong apt-get.


1
quá trình biên dịch đã kết thúc. lỗi: lệnh 'i686-linuxgnu-gccc' thất bại với trạng thái thoát 1
jarppa79

cảnh báo: tùy chọn dòng lệnh ä-Wstrict-nguyên mẫu có giá trị trong c / ObjC nhưng không phải cho C ++ [kích hoạt theo mặc định]
jarppa79

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

1

Tôi biết đây là một câu hỏi cũ, nhưng người bảo trì có pyodbcRepo GitHub .

Tôi cũng tìm thấy một ví dụ rất tốt để cài đặt FreeTDS và thiết lập các tệp cấu hình .


Đối với tôi, làm theo hướng dẫn trên tài liệu GitHub dường như luôn là lựa chọn tốt nhất. Kể từ tháng 2 năm 2018, đối với CentOs7 (họ có tất cả các hương vị tại liên kết), họ nói:

# 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

Xin chào Shubham, tôi xin lỗi, tôi không hiểu câu hỏi của bạn. Sau khi nhập pip install pyodbc, giả sử mọi thứ khác đều ổn, bạn sẽ có cả trình điều khiển và gói được cài đặt và khả dụng. Bạn chỉ cần "sử dụng" gói, tạo đối tượng kết nối và con trỏ tương tự như bất kỳ quyền truy cập có lập trình nào khác vào DB. Bạn có thể xem tài liệu của họ để biết ví dụ.
Mike Williamson

1

Tôi phải đối mặt với cùng một vấn đề. Đối với python3.6.8 và ubuntu 16.04 không có cách nào ở trên không giúp được tôi.

sudo apt-get install python3.6-dev

Điều này đã giải quyết vấn đề của tôi.


1

Trong trường hợp của tôi ( Amazon Linux AMI ) không có cách nào ở trên hoạt động. Những điều sau đã hoạt động (ý tưởng từ đây ):

  • Tìm đường dẫn đến tệp cc1plus. Đối với tôi nó đã được trong /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus. Đối với bạn nó có thể thay đổi một chút. Cố gắng ls -l /usr/libexec/gcctìm tên thư mục thích hợp và tiếp tục.
  • Tìm thư mục trong đường dẫn của bạn: echo $PATH(đối với tôi là như vậy /sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin)
  • Đặt một liên kết đến cc1plusmột trong các thư mục trong PATH của bạn: sudo ln -s /PATH/TO/cc1plus /DIRinPATH/
    Ví dụ trong trường hợp của tôi:
    sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/bin/

1

Đối với Archlinux / manjaro:

sudo pacman -S unixodbc

sau đó:

sudo pip install pyodbc

hoặc là:

pip install pyodbc

Bạn có thể nâng cấp công cụ thiết lập bánh xe pip của mình trước khi cài đặt pyodbc (nó sẽ không ảnh hưởng đến việc cài đặt pyodbc) cũng với:

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

hoặc là

python -m pip install --upgrade pip wheel setuptools

0

Tôi đã sử dụng cái này:

yum install unixODBC.x86_64

Tùy thuộc vào phiên bản centos có thể thay đổi gói, bạn có thể tìm kiếm như sau:

yum search unixodbc

0

2 lệnh này từ đây đã làm việc cho tôi trong RHEL 8

sudo dnf install redhat-rpm-config gcc-c++ python3-devel unixODBC-devel
pip3 install --user pyodbc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.