web-dev-qa-db-ja.com

Windows上のeasy_install cx_Oracle(Pythonパッケージ)

だから私は cx_Oracleのインストールを助ける を見つけましたが、それでも立ち往生しています。 Oracleから最新のInstantClientをダウンロードし、Oracle_HOMEを抽出されたファイルの場所(直接およびOracle_HOME値とファイルの間にbinフォルダーを含む)に設定しましたが、setup.pyを実行すると、easy_installでエラーが発生し、 t Oracleインクルードファイルを見つけます。 11g dllのみがフォルダーにあることに気付きましたが、セットアップを完了するために3つのドライバーがすべて必要ですか?その場合、どこで入手できますか?

13
Silas Ray

正直なところ、cx_Oracleは、ソースからではなく バイナリインストーラー の1つからインストールする方がはるかに簡単です。

* nixのHOWTO:

  1. 参照してください Linux x86のインスタントクライアントのダウンロードページ

  2. ご使用のアーキテクチャー(32ビットまたは64ビット)に適合する基本パッケージ、sqlplusパッケージ、およびsdkパッケージの最新バージョンをダウンロードします。

    • Oracle-instantclient<version>-basic-<version_full>.<Arch>.rpm
    • Oracle-instantclient<version>-sqlplus-<version_full>.<Arch>.rpm
    • Oracle-instantclient<version>-devel-<version_full>.<Arch>.rpm
  3. Alienを使用してRPMをインストールします。たとえば、この記事の執筆時点では、次のとおりです。

    $ Sudo alien -i Oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
    
  4. 必要な環境変数を追加します(私は個人的に/etc/environmentに配置してから、ログオフ/バックして環境をリロードします):

    Oracle_HOME=/usr/lib/Oracle/<version>/client64/lib/
    LD_LIBRARY_PATH=/usr/lib/Oracle/<version>/client64/lib/
    
  5. Oracleのインクルードを修正

    $ Sudo ln -s /usr/include/Oracle/<version>/client $Oracle_HOME/include  # for 32bits Arch, OR
    $ Sudo ln -s /usr/include/Oracle/<version>/client64 $Oracle_HOME/include  # for 64bits Arch
    
  6. 以下を含む/etc/ld.so.conf.d/Oracle-instantclient<version>-basic.confおよび/etc/ld.so.conf.d/Oracle.confを作成します(最新バージョンの場合、少なくとも12.1以降)。

      /lib  
      /usr/lib/Oracle/<version>/client/lib  ; for 32bits Arch, OR
      /usr/lib/Oracle/<version>/client64/lib  ; for 64bits Arch
    
  7. Ldconfigキャッシュをリロードします(詳細が必要な場合は-vフラグを使用します):

    $ Sudo ldconfig
    

libaio1のインストールが必要になる場合があります。

HxTO cx_Oracleをインストールする

Oracle Instant Client 10がインストールされていると仮定すると、インストールする別の方法があります cx_Oracle

  1. pip でインストール:$ pip install cx_Oracle(Linuxのみ)
  2. cx_Oracle PyPI サイトからinstaller/.tar.gzファイルをダウンロードします

古いバージョン(5.1.2未満のバージョンは.msiおよび.rpmファイルです)は here からダウンロードできます。 alienを使用してRPMをインストールします。たとえば、この記事の執筆時点では、$ Sudo alien -i cx_Oracle-5.0-10g-py25-1.x86.rpm

テストするには、python -c 'import cx_Oracle; print cx_Oracle'はモジュールとそのバージョンを返す必要があります。

19
Christian Witts

ステップ1check python is 32 bit or 64

import platform
platform.architecture()[0]#'32bit'

または enter image description hereステップ2Oracleクライアントをインストールします(32ビットまたは64ビットはpythonステップ1のバージョンに依存)

  • http://www.Oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html(link for32 bit version)からOracleクライアントをダウンロードします。 1つのフォルダーにZipファイルをダウンロードして抽出する
  • この場合、Zipファイルは「インストール」に抽出されます。
  • ディレクトリはこのように表示されます enter image description here

    • インストールをクリックし、パスを「ベース」および「ソフトウェア」ディレクトリに設定します

      • ソフトウェアディレクトリはベースディレクトリ内にある必要があります(推奨)
      • この場合、「インストール済み」ディレクトリがベースで、「ソフトウェア」ディレクトリはソフトウェアパス用です

      • oracle_HOMEパスを設定します。

      • oracleホームパスを「software」ディレクトリに「F:\ softwares\Oracle11g32\installed\software」として設定します

      • コマンドで 'echo%Oracle_HOME%'をチェックして、パスが正しく設定されているかどうかを確認します

ステップ3python 2.7のvcforpython27またはVisual C++ 2008 Express Editionをインストールします

  • ここからダウンロード https://www.Microsoft.com/en-sa/download/details.aspx?id=44266 (この場合、全体のインストールを回避するためにこれを使用)下記のビジュアルc ++ 2008)

  • これは、python 2.7用のC++コンパイラを含む小さなパッケージです。

  • (または)

  • ビジュアルc ++ 2008エクスプレスエディション( https://www.Microsoft.com/en-sa/download/details.aspx?id=5582 )[約1 GBのインストール]

  • vcforpython27は「C:\ Users\Administrator\AppData\Local\Programs\Common\Microsoft」にインストールされます

  • これらのディレクトリ に対して、ウィンドウ内の隠しフォルダを表示できるようにしますenter image description here

  • 「C:\ Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0」という値で、「VS100COMNTOOLS」という名前の環境変数を設定します
  • 'vcvarsall'バッチファイル を含むディレクトリを指す必要がありますenter image description here

  • %VS100COMNTOOL%をエコーし​​て、cmdの正しいディレクトリを指しているかどうかを確認します

  • そして、以下の手順を実行します:(from: error:Unable to find vcvarsall.bat

  • c:/ Python27/lib/distutilsファイルmsvc9compiler.pyに移動します。その中で関数find_vcvarsallを見つけ、次の変更を行います。次の行を置き換えます:productdir = os.path.join(toolsdir、os.pardir、os.pardir、 "VC")with productdir = os.path.join(toolsdir)これは、この場合vcvarsall.batが存在する場所です(チェック、ここで、vcvarsall.batはインストールに含まれています)。

install cx_Oracle

 the easy step: pip install cx_Oracle

上記のすべての手順が適切に実行されている場合は、機能するはずです。これを理解するには多くの苦労が必要でした。お役に立てれば幸いです。

実行することをお勧めします:

 pip install --upgrade setuptools
 from : https://stackoverflow.com/questions/2667069/cannot-find-vcvarsall-bat-when-running-a-python-script
10
javed
  1. Oracleインスタントクライアントをダウンロードします(32ビットまたは64ビットのアーキテクチャおよび適切なバージョンのOracle(10g、11g、12g)用)。 http://www.Oracle.com/technetwork/topics/winx64soft-089540.html

注:ユーザーにOTN(Oracle techネットワークアカウント)による認証を要求します。

1.1。 「Instant Client Package-Basic」をC:\ Python27\Scripts\instantclient_11_2にダウンロードして解凍します。 instantclient-basic-windows.x64-11.2.0.4.0.Zip

1.2。 「Instant Client Package-SDK」をC:\ Python27\Scripts\instantclient_11_2にダウンロードして解凍します。 instantclient-sdk-windows.x64-11.2.0.4.0.Zip

  1. oracle_HOME = C:\ Python27\Scripts\instantclient_11_2を設定します

  2. python -m pip install cx_Oracle

成功時の出力:Collecting cx_Oracle Using cached cx_Oracle-5.2.1.tar.gz Building wheels for collected packages: cx-Oracle Running setup.py bdist_wheel for cx-Oracle ... done Stored in directory: C:\Users\m315468\AppData\Local\pip\Cache\wheels\7c\5f\96\ cd273c9b675bc7c28ae249b74d1f7df5d3eacba9e918715225 Successfully built cx-Oracle Installing collected packages: cx-Oracle Successfully installed cx-Oracle-5.2.1

1
elkurto

苦労した後、私は以下の方法を見つけました。私はWindowsを使用していて、Django用に別の環境があります。

  1. この link に従って、Windowsセクションに移動します。 Oracleの「Instant Client Zip」の下に、必要なバージョンとビットに応じてZipファイルをダウンロードする最初のステップが表示されます。 Zipファイルをダウンロードします。注意Django 2はOracle 11をサポートしていません。
  2. Windowsでは、以下のフォルダー構造c:\ Oracle\instantclient_12_2を作成します。
  3. このフォルダーの下にファイルを解凍します。
  4. コントロールパネル->システム->システムの詳細設定->詳細->環境変数->システム変数-> PATHでPATHを設定します。インスタントクライアントディレクトリは、他のOracleディレクトリよりも前にPATHに入っている必要があります。
  5. 他のコマンドプロンプトを開くか、現在のコマンドプロンプトを再起動します。
  6. コンダアクティブ化
  7. タイプpython
  8. 以下のコマンドを1つずつ実行して接続をテストします。最後のforループのインデントに注意してください。

    import cx_Oracle
    
    connection = cx_Oracle.connect("your_username", "your_psw", "localhost/orcl")
    
    cursor = connection.cursor()
    
    cursor.execute("""select to_char(sysdate, 'dd-mon-yyyy') from dual""")
    
    for cdate in cursor:
    
        print("Today the date is ", cdate)
    

出力:

 Today the date is  ('08-nov-2019',)
0
Rishi Bansal