13

所以我找到了安装 cx_Oracle 的帮助,但仍然卡住了。我从 oracle 下载了最新的即时客户端,并将 ORACLE_HOME 设置为提取文件的位置(直接和 ORACLE_HOME 值和文件之间的 bin 文件夹),但是运行 setup.py 时 easy_install 弹出错误说它可以' t 定位 Oracle 包含文件。我确实注意到文件夹中只有 11g dll,我是否需要所有 3 个驱动程序才能完成设置?如果是这样,我什至从哪里得到它们?

4

4 回答 4

19

老实说,从他们拥有的二进制安装程序之一安装 cx_Oracle比从源代码安装要容易得多。

*nix 的 HOWTO:

  1. 浏览到Instant Client for Linux x86 下载页面。

  2. 下载适合您的架构(32 位或 64 位)的最新版 basic、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. 使用外星人安装 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.

如何安装 cx_Oracle

假设我们已经安装了 Oracle Instant Client 10,您有不同的选择来安装cx_Oracle

  1. 使用pip安装:($ pip install cx_oracle仅限 Linux)
  2. cx_oracle PyPI站点下载安装程序/.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

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

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

步骤 2安装 oracle 客户端(32 位或 64 位取决于步骤 1 中的 python 版本)在此处输入图像描述

  • 从http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html下载 oracle 客户端(32 位版本的链接) 下载并解压 zip 文件在一个文件夹中
  • 在这种情况下,zip 文件被提取到“安装”
  • 目录将如下所示 在此处输入图像描述

    • 单击安装并将路径设置为“基本”和“软件”目录

      • 软件目录应该在基本目录中(推荐)
      • 在这种情况下,“已安装”目录是基本目录,“软件”目录是软件路径

      • 设置 ORACLE_HOME 路径:

      • 将 oracle 主路径设置为 'software' 目录为 'F:\softwares\oracle11g32\installed\software'

      • 在 cmd 检查 'echo %ORACLE_HOME%' 以查看路径是否设置正确

第 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++ 编译器

  • (或者)

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

  • vcforpython27 将安装在 'C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft'

  • 启用在 Windows 中显示隐藏文件夹到这些目录 在此处输入图像描述

  • 设置一个名为“VS100COMNTOOLS”的环境变量,其值为“C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0”
  • 它应该指向包含“vcvarsall”批处理文件的目录在此处输入图像描述

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

  • 并执行以下步骤:(来自:错误:无法找到 vcvarsall.bat

  • 转到 C:/Python27/lib/distutils 文件 msvc9compiler.py。在其中找到函数 find_vcvarsall 并进行以下修改。将以下行替换: productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC") 与 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 技术网络帐户)进行身份验证。

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

于 2017-03-07T13:40:24.430 回答
0

经过努力,我找到了以下方法。我正在使用 Windows,并且有单独的 django 环境。

  1. 点击此链接并转到 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. 康达激活
  7. 输入蟒蛇
  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',)
于 2019-11-08T09:10:32.527 回答