13

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

4

4 に答える 4

19

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

* nixのHOWTO:

  1. Linuxx86用のインスタントクライアントのダウンロードページを参照します。

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

    • 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. エイリアンを使用して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. オラクルのインクルードを修正

    $ 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

cx_Oracleをインストールする方法

Oracle Instant Client 10をインストールしたとすると、 cx_Oracleをインストールするためのさまざまな方法があります。

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

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

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

于 2012-06-28T13:52:40.327 に答える
10

ステップ1Pythonが32ビットまたは64であることを確認します

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

または ステップ2Oracleクライアントをインストールします(32ビットまたは64ビットはステップ1のPythonバージョンによって異なります)ここに画像の説明を入力してください

  • http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html(32ビットバージョンのリンク)からOracleクライアントをダウンロードします。zipファイルを1つのフォルダーにダウンロードして解凍します。
  • この場合、zipファイルは「インストール」に抽出されます
  • ディレクトリは次のように表示されます ここに画像の説明を入力してください

    • インストールをクリックして、パスを「base」および「software」ディレクトリに設定します

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

      • ORACLE_HOMEパスを設定します。

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

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

ステップ3Python2.7用のvcforpython27またはvisualc++ 2008ExpressEditionをインストールします

  • ここからダウンロードしてくださいhttps://www.microsoft.com/en-sa/download/details.aspx?id=44266(この場合、以下で説明するように、Visual C ++ 2008全体のインストールを回避するためにこれを使用します)

  • これは、Python2.7用のc++コンパイラを含む小さなパッケージです。

  • (または)

  • Visual C ++ 2008 Express Edition(https://www.microsoft.com/en-sa/download/details.aspx?id=5582)[約1GBのインストールになります]

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

  • このこれらのディレクトリへのウィンドウで隠しフォルダを表示を有効にします ここに画像の説明を入力してください

  • 「VS100COMNTOOLS」という名前の環境変数を「C:\ Users \ Administrator \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python\9.0」の値で設定します。
  • 'vcvarsall'バッチファイルを含むディレクトリを指す必要がありますここに画像の説明を入力してください

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

  • そして、以下の手順を実行します:( from:エラー: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はインストールに含まれています)。

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
于 2016-02-25T17:26:14.193 に答える
1
  1. oracleインスタントクライアントをダウンロードします(32ビットまたは64ビットアーキテクチャおよび適切なバージョンのOracle(10g、11g、12g)用)。 http://www.oracle.com/technetwork/topics/winx64soft-089540.html

注:ユーザーはOTN(oracle techネットワークアカウント)で認証する必要があります。

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

1.2。「インスタントクライアントパッケージ-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

于 2017-03-07T13:40:24.430 に答える
0

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

  1. このリンクをたどって、Windowsセクションに移動します。Oracleの「InstantClientZip」の下に、必要なバージョンとビットに応じてzipファイルをダウンロードするための最初のステップが表示されます。zipファイルをダウンロードします。django2はOracle11をサポートしていないことに注意してください。
  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',)
于 2019-11-08T09:10:32.527 に答える