在Windows上easy_install cx_Oracle(python包)

所以我发现帮助安装cx_Oracle,但我仍然坚持。 我从oracle下载了最新的instantclient,并将ORACLE_HOME设置为解压缩文件的位置(包括ORACLE_HOME值和文件之间的bin文件夹),但easy_install在运行setup.py时popup一个错误,findOracle包含文件。 我没有注意到,只有11克DLL是在文件夹中,我需要所有3个驱动程序存在设置才能完成? 如果是这样,我甚至可以在哪里得到它们?

说实话,从一个二进制安装程序安装cx_Oracle比从源代码安装要容易得多。

HOWTO for * nix:

  1. 浏览到Instant Client for 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. 使用外来程序安装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. 修复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

HOWTO安装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' python -c 'import cx_Oracle; print cx_Oracle'应该返回与它的版本的模块。

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

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

要么 在这里输入图像说明 第2步安装oracle客户端(32位或64位取决于从第1步的python版本)

第3步安装vcforpython27或Visual C ++ 2008快速版for python 2.7

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

  • 它是一个包含python 2.7的c ++编译器的小软件包

  • (要么)

  • visual c + + 2008年快速版( https://www.microsoft.com/en-sa/download/details.aspx?id=5582 )[它将围绕1 GB的安装]

  • 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'批处理文件的目录 在这里输入图像说明

  • 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驻留在这种情况下的地方(check,其中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 
  1. 下载oracle即时客户端(适用于32位或64位的archtitect和适当版本的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安装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