web-dev-qa-db-ja.com

pythonの場合はcx_Oracleをインストールします

Debian 5で、私はpythonのためにcx_Oracleモジュールをインストールしようとして成功していませんでした。まず、Oracle-xe-clientとその依存関係をインストールしました(次のリンクのチュートリアルに従ってください ここ )。

次に、/ usr/lib/Oracle/xe/app/Oracle/product/10.2.0/client/binのスクリプトを使用して環境にデータを入力しましたPATH、Oracle_HOME、NLS_LANGなどの変数。

これが完了したら、実行しようとしました:

Sudo easy_install cx_Oracle

しかし、次のエラーが発生し続けます。

Searching for cx-Oracle
Reading http://pypi.python.org/simple/cx_Oracle/
Reading http://cx-Oracle.sourceforge.net
Reading http://starship.python.net/crew/atuining
Best match: cx-Oracle 5.0.4
Downloading http://prdownloads.sourceforge.net/cx-Oracle/cx_Oracle-5.0.4.tar.gz?download
Processing cx_Oracle-5.0.4.tar.gz
Running cx_Oracle-5.0.4/setup.py -q bdist_Egg --dist-dir /tmp/easy_install-xsylvG/cx_Oracle-5.0.4/Egg-dist-tmp-8KoqIx
error: cannot locate an Oracle software installation

ここで見逃したものはありますか?

33
Mo J. Mughrabi

Rpmファイルを取得して、alienでインストールすることをお勧めします。そうすれば、後で実行できますapt-get purge no-longer-needed

私の場合 、必要なenv変数はLD_LIBRARY_PATH、だから私はやった:

echo export LD_LIBRARY_PATH=/usr/lib/Oracle/11.2/client/lib >> ~/.bashrc
source ~/.bashrc

あなたの場合、パス変数は/usr/lib/Oracle/xe/app/Oracle/product/10.2.0/client/lib

11
tshepang

別の方法は、RPMを必要としません。 rootである必要があります。

  1. 依存関係

    次のパッケージをインストールします。

    apt-get install python-dev build-essential libaio1
    
  2. ダウンロードLinux x86-64のインスタントクライアント

    Oracleの ダウンロードサイトから次のファイルをダウンロードします

    files preview

  3. Zipファイルを抽出します

    ダウンロードしたZipファイルをいくつかのディレクトリに解凍します。私は以下を使用しています:

    /opt/ora/
    
  4. 環境変数の追加

    を含むファイルを/etc/profile.d/Oracle.shに作成します

    export Oracle_HOME=/opt/ora/instantclient_11_2
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$Oracle_HOME
    

    を含むファイルを/etc/ld.so.conf.d/Oracle.confに作成します

    /opt/ora/instantclient_11_2
    

    次のコマンドを実行します

    Sudo ldconfig
    

    注:設定を適用するには再起動が必要な場合があります

  5. シンボリックリンクを作成する

    cd $Oracle_HOME 
    ln -s libclntsh.so.11.1 libclntsh.so
    
  6. Install cx_Oracle python package

    • pipを使用してインストールできます

      pip install cx_Oracle
      
    • または手動でインストールする

      PythonおよびOracleバージョンに対応する cx_OracleソースZip をダウンロードします。その後、アーカイブを展開し、抽出されたディレクトリから実行します。

      python setup.py build 
      python setup.py install
      
68
Burhan Khalid

以下は、MacとLinuxの両方でうまくいきました。この1つのコマンドは、環境変数を設定する必要なく、必要な追加ファイルをダウンロードする必要があります。

python -m pip install cx_Oracle --pre

-preオプションは、Oracleドライバの開発およびプレリリース用です。この投稿の時点で、cx_Oracle-6.0rc1.tar.gz、これは必要でした。 (python 3.6)を使用しています

5
Mike Chirico

Thx Burhan Khalid、「あなたはルートになる必要がある」という引用を見落としましたが、あなたがルートではないときの方法を見つけました here

ポイント7では、以下を使用する必要があります。

Sudo env Oracle_HOME=$Oracle_HOME python setup.py install 

または

Sudo env Oracle_HOME=/path/to/instantclient python setup.py install
4
LuciusAgarthy

SudoにはOracle_HOMEを取得するアクセス権がない可能性があると思います。このようにすることができます。

須藤ビスド

テキストを変更します

デフォルトenv_keep + = "Oracle_HOME"

それから

Sudo python setup.py build install

2
TonyCoolZhu

Burhan Khalidに感謝します。ソフトリンクを作成するというあなたのアドバイスは、私のインストールが最終的に機能するようにします。

要点をまとめると:

  1. インスタントクライアントの基本バージョンとSDKバージョンの両方が必要です

  2. LD_LIBRARY_PATHとOracle_HOMEの両方を設定する必要があります

  3. ソフトリンクを作成する必要があります(私の場合、ln -s libclntsh.so.12.1 libclntsh.so)

これはどこにも文書化されておらず、信じられないほどイライラさせられます。昨日、ソフトリンクを作成することがわからなかったため、失敗したビルドで3時間以上費やしました。

2
user3520634

または、次の手順を使用して、PIPなしでcx_Oracleモジュールをインストールできます。

  1. ここからソースをダウンロードしてください https://pypi.python.org/pypi/cx_Oracle [cx_Oracle-6.1.tar.gz]
  2. 次のコマンドを使用してtarを抽出します(Linux)

    gunzip cx_Oracle-6.1.tar.gz

    tar -xf cx_Oracle-6.1.tar

  3. cd cx_Oracle-6.1

  4. モジュールを構築する

    python setup.pyビルド

  5. モジュールをインストールする

    python setup.pyインストール

1
Zeus

これは私のために働いた

python -m pip install cx_Oracle --upgrade

詳細については、Oracleクイックスタートガイドを参照してください。

https://cx-Oracle.readthedocs.io/en/latest/installation.html#quick-start-cx-Oracle-installation

0
Sateesh

これはちょうど私のために働いた Ubuntu 16

Oracle Webサイトからダウンロード(「instantclient-basic-linux.x64-12.2.0.1.0.Zip」および「instantclient-sdk-linux.x64-12.2.0.1.0.Zip」)してから次のスクリプト(1つずつ実行できますが、ROOTとして実行しました):

apt-get install -y python-dev build-essential libaio1
mkdir -p /opt/ora/
cd /opt/ora/

## Now put 2 Zip files:
# ('instantclient-basic-linux.x64-12.2.0.1.0.Zip' and 'instantclient-sdk-linux.x64-12.2.0.1.0.Zip') 
# into /opt/ora/ and unzip them -> both will be unzipped into 1 directory: /opt/ora/instantclient_12_2 

rm -rf /etc/profile.d/Oracle.sh
echo "export Oracle_HOME=/opt/ora/instantclient_12_2"  >> /etc/profile.d/Oracle.sh
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$Oracle_HOME"  >> /etc/profile.d/Oracle.sh
chmod 777 /etc/profile.d/Oracle.sh
source /etc/profile.d/Oracle.sh
env | grep -i ora  # This will check current ENVIRONMENT settings for Oracle


rm -rf /etc/ld.so.conf.d/Oracle.conf
echo "/opt/ora/instantclient_12_2" >> /etc/ld.so.conf.d/Oracle.conf
ldconfig
cd $Oracle_HOME  
ls -lrth libclntsh*   # This will show which version of 'libclntsh' you have... --> needed for following line:

ln -s libclntsh.so.12.1 libclntsh.so

pip install cx_Oracle   # Maybe not needed but I did it anyway (only pip install cx_Oracle without above steps did not work for me...)

pythonスクリプトは 'cx_Oracle'を使用する準備ができました...お楽しみください!

0
Joe

MACにインストールしようとしている場合は、ダウンロードしたOracleクライアントを解凍して、python scripts。が動作するようになります。

環境変数の設定の問題が多すぎます。それは私のために働いた。

お役に立てれば。

ありがとう

0
vikash prasad