Linuxにpyodbcをインストールできません


83

Linux(2.6.18-164.15.1.el5.centos.plus)を実行していて、pyodbcをインストールしようとしています。私はpipinstall pyodbcを実行していますが、エラーの非常に長いリストが表示されます。

エラー:コマンド 'gcc'が終了ステータス1で失敗しました

/root/.pip/pip.logを調べたところ、次のことが わかりました。

InstallationError:コマンド/ usr / local / bin / python -c "import setuptools; file = '/ home / build / pyodbc / setup.py'; execfile( '/ home / build / pyodbc / setup.py')" install- -single-version-externally-managed --record / tmp / pip-7MS9Vu-record / install-record.txtがエラーコード1で失敗しました

pyodbcのインストールで同様の問題が発生した人はいますか?

回答:


155

Ubuntuでは、unixodbc-devをインストールする必要があります。

sudo apt-get install unixodbc-dev

次のコマンドを使用してpipをインストールします。

sudo apt-get install python-pip

それがインストールされると、pyodbcを正常にインストールできるようになります。

pip install pyodbc

これがうまくいく前に、python-develもインストールする必要がありました。
マイク

はい、そうです!!! これは私が使用した5番目のソリューションであり、機能しました。ありがとうございます:)
ファニー2016年

それはうまくいきました!「パッケージが見つかりません」というエラーが発生しましたが、sudo apt-getupdateを実行すると最初に修正されました。
ChrisE 2016年

1
Ubuntu上のsudo apt-get install python3.7-dev
Python3.7の場合は、

57

pyodbcの正しい指示に従うことで問題を解決しました-次のようなウィキ構築します

Linuxでは、pyodbcは通常unixODBCヘッダーを使用して構築されるため、unixODBCとそのヘッダーをインストールする必要があります。RedHat / CentOS / Fedoraボックスでは、これはunixODBC-develをインストールする必要があることを意味します。

yum install unixODBC-devel

私にとっては失敗します... SyntaxError:無効な構文ファイル "/ usr / libexec / urlgrabber-ext-down"、OSErrorを除く28行目、e:^ SyntaxError:無効な構文ユーザーキャンセル時に終了
famargar

@famargar Linuxディストリビューションをアップグレードしましたか?
IgorGanapolsky

Centos7とLinux3.10.0-957.5.1.el7.x86_64を使用しています。彼らはpyodbcに問題があることが知られていますか?
famargar

17

この質問にもう1つ答えを追加します。以下のためのLinuxのDebianストレッチリリースは、次の依存関係をインストールする必要があります:

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

Debian Slimイメージでは、pyodbcをインストールする前にg ++を含める必要がありました。
snympi 2018年

@Snympiうん、それが上記のコマンドに含まれる理由apt-get install g++です;)
Alexis.Rolland 2018年

1
どうもありがとうございました。あなたの答えは私のDebianGNU / Linux 9で機能しますが、g ++はごくわずかです。
CK

15

以下の手順に従って、任意のRedHatバージョンにpyodbcをインストールします

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


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

Ubuntu Linuxでのgccエラーを回避するために、私は次のことを行いました。

sudo aptitude install g++

Synapticから次の2つのパッケージもインストールしました。

  • python-dev

  • tdsodbc


または、Ubuntuを使用している場合:sudo apt-get install g++その後、venvにpipインストールすることができました。ありがとう!
cheevahagadog

3

CentOS5.5でも同じ問題が発生しました

unixODBC-develのインストールに加えて、gcc-c ++もインストールする必要がありました。

yum install gcc-c++

3

pyodbcをインストールする簡単な方法は、「c​​onda」を使用することです。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

私はそれをすべて必要としましたが、pythondevelをインストールする必要もありました:

sudo yum install python-devel

1

zipファイルからpyobdcをインストールするのはどうですか?pyODBCを使用してのUbuntuからMicrosoft SQL Serverに接続する方法

ソースをダウンロードvsapt-get

Ubuntuのapt-getユーティリティにはpyODBCのバージョンがあります。(バージョン2.1.7)。
ただし、これはひどく古く(2.1.7対3.0.6)、unixODBCおよびfreetdsの新しいバージョンではうまく機能しない可能性があります。
これは、Microsoft Sql Serverの新しいバージョン(2008以降)に接続しようとしている場合に特に重要です。
apt-getのパッケージに依存するのではなく、最新のMicrosoft Sql Serverを使用する場合は、unixODBC、freetds、およびpyODBCの最新バージョンを使用することをお勧めします。


1
コンパイルが終了しました。エラー:コマンド 'i686-linuxgnu-gccc'が終了ステータス1で失敗しました
jarppa79 2014

警告:コマンドラインオプションä-Wstrict-prototypes 'はc / Objcでは有効ですが、C ++では無効です[デフォルトで有効]
jarppa79 2014

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

1

これは古い質問ですが、メンテナーにはpyodbcGitHubリポジトリがあります。

FreeTDSをインストールして設定ファイルを設定するための非常に良い例も見つけました。


GitHubのドキュメントの指示に従うことが、常に最良の選択肢であるように思われます。2018年2月の時点で、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

こんにちはShubham、すみません、あなたの質問がわかりません。を入力pip install pyodbcした後、他のすべてが正常に行われたと仮定すると、ドライバーとパッケージの両方がインストールされ、使用可能になります。パッケージを「単に使用」して、DBへの他のプログラムによるアクセスと同様に接続オブジェクトとカーソルを作成します。あなたは例のために彼らのドキュメントを見ることができます。
マイクウィリアムソン

1

私は同じ問題に直面しました。python3.6.8とubuntu16.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
  • cc1plusPATH内のディレクトリの1つにリンクを配置します。 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をインストールする前にpipwheel setuptoolsをアップグレードすることもできます(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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.