在Windows上easy_install cx_Oracle(python包)

时间:2012-06-28 13:41:04

标签: python windows easy-install cx-oracle

所以我找到了Help installing cx_Oracle,但仍然卡住了。我从oracle下载了最新的instantclient,并将ORACLE_HOME设置为解压缩文件的位置(直接和ORACLE_HOME值与文件之间的bin文件夹),但easy_install在运行setup.py时弹出错误说它可以'找到Oracle包含文件。我注意到文件夹中只有11g dll,我是否需要所有3个驱动程序才能完成设置?如果是这样,我在哪里获得它们?

4 个答案:

答案 0 :(得分:18)

老实说,从他们拥有的binary installers之一安装cx_Oracle比从源安装cx_Oracle要容易得多。

HOWTO for * nix:

  1. 浏览至Instant Client for Linux x86 download page.

  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. 使用alien安装RPM。例如,在撰写本文时:

    $ sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
    
  4. 添加必要的环境变量(我个人确实把它放在/etc/environment然后注销/重新加载以重新加载env):

    ORACLE_HOME=/usr/lib/oracle/<version>/client64/lib/
    LD_LIBRARY_PATH=/usr/lib/oracle/<version>/client64/lib/
    
  5. Fix oracle's includes

    $ 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
    
  8. 您可能需要安装libaio1

    如何安装cx_Oracle

    假设我们已经安装了Oracle Instant Client 10,您可以使用不同的替代方法来安装cx_Oracle

    1. 使用pip安装:$ pip install cx_oracle(仅限Linux)
    2. cx_oracle PyPI网站
    3. 下载安装程序/ .tar.gz文件

      旧版本(小于5.1.2的版本是.msi和.rpm文件)可以从here下载。使用外星人安装RPM。例如,在撰写本文时:       $ sudo alien -i cx_Oracle-5.0-10g-py25-1.x86.rpm

      要进行测试,python -c 'import cx_Oracle; print cx_Oracle'应该返回模块及其版本。

答案 1 :(得分:10)

第1步检查python是32位还是64位

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

或      enter image description here 第2步安装oracle客户端(32位或64位取决于步骤1中的python版本)

  • http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html(link下载32位版本的oracle客户端) 下载并解压缩一个文件夹中的zip文件
  • 将zip文件解压缩到&#39;安装&#39;在这种情况下
  • 目录将如下所示 enter image description here

    • 点击安装并设置&#39; base&#39;和&#39;软件&#39;目录

      • 软件目录应在基本目录内(推荐)
      • 在这种情况下安装&#39;目录是基础和&#39;软件&#39;目录用于软件路径

      • 设置ORACLE_HOME路径:

      • 将oracle主路径设置为&#39;软件&#39;目录为&#39; F:\ softwares \ oracle11g32 \ installed \ software&#39;

      • in cmd check&#39; echo%ORACLE_HOME%&#39;查看路径是否设置正确

第3步为python 2.7安装vcforpython27或visual c ++ 2008 express edition

  • 从这里下载https://www.microsoft.com/en-sa/download/details.aspx?id=44266(在这种情况下用这个来避免安装整个visual c ++ 2008,如下所述)

  • 它是一个包含python 2.7

  • 的c ++编译器的小包
  • (OR)

  • visual c ++ 2008 express edition(https://www.microsoft.com/en-sa/download/details.aspx?id=5582)[它将安装1 GB左右]

  • vcforpython27将安装在&#39; C:\ Users \ Administrator \ AppData \ Local \ Programs \ Common \ Microsoft&#39;

  • 在Windows中启用show hidden folder到这些目录 enter image description here

  • 设置一个名为&#39;的环境变量。 VS100COMNTOOLS&#39;值为&#39; C:\ Users \ Administrator \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ 9.0&#39;
  • 它应该指向包含&#39; vcvarsall&#39;的目录。批处理文件enter image description here

  • echo%VS100COMNTOOL%以查看是否指向cmd中的正确目录

  • 并执行以下步骤:(来自:error: Unable to find vcvarsall.bat

  • 转到C:/ Python27 / lib / distutils文件msvc9compiler.py。在其中找到函数find_vcvarsall并进行以下修改。 替换线: productdir = os.path.join(toolsdir,os.pardir,os.pardir,&#34; VC&#34;) 同 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

答案 2 :(得分:1)

  1. 下载oracle即时客户端(适用于32位或64位archtitect和适当版本的Oracle(10g,11g,12g))。 http://www.oracle.com/technetwork/topics/winx64soft-089540.html
  2. 注意:要求用户使用OTN(oracle tech网络帐户)进行身份验证。

    1.1。下载并解压缩“Instant Client Package - Basic” C:\ Python27 \脚本\ 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

    3. 成功输出: 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

答案 3 :(得分:0)

经过努力,我发现了以下方法。我正在使用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。 Instant Client目录必须位于PATH之前,而不是任何其他Oracle目录。
  5. 打开其他命令提示符或重新启动当前命令提示符。
  6. conda激活
  7. 输入python
  8. 逐条运行以下所有命令以测试连接,请注意最后一个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',)