【问题标题】:Python: import cx_Oracle ImportError: No module named cx_Oracle error is thownPython: import cx_Oracle ImportError: No module named cx_Oracle 错误被抛出
【发布时间】:2021-07-30 16:30:38
【问题描述】:

我尝试在 .py 中编写一个用于 oracle 连接的脚本:

#!/usr/bin/python

import cx_Oracle

connstr='username/pwd@database'
conn = cx_Oracle.connect(connstr)
curs = conn.cursor()

curs.execute('select * from table1;')
print curs.description
for row in curs:
   print row
conn.close()

我收到以下错误:

Traceback (most recent call last):
  File "test_SQLPython.py", line 3, in ?
    import cx_Oracle
ImportError: No module named cx_Oracle

任何帮助将不胜感激? 谢谢。

【问题讨论】:

  • cx_Oracle.py 位于何处?它可能在您的 python PATH 中未列出的某个地方

标签: python


【解决方案1】:

尝试通过上述答案中发布的 rpm 安装它,但没有成功。取而代之的是简单的pip install

pip install cx_oracle

以上命令安装cx_oracle=6.1 请注意,我使用的是python 2.7.14 Anaconda releaseoracle 12c

【讨论】:

    【解决方案2】:

    Windows 帮助:

    1. here获取即时客户端。
    2. 将目录放入 PATH 变量中。
    3. 转到命令提示符(Win+R 并输入 cmd)并设置 2 个与您的位置匹配的变量 - 例如:

      set TNS_ADMIN=C:\instant_client\instantclient_11_2 set ORACLE_HOME=C:\instant_client\instantclient_11_2

    然后从 exe 安装 cx_Oracle 模块。如果你使用 pip 或 easy_install,……祝你好运。

    您可以在此处获取安装程序:https://pypi.python.org/pypi/cx_Oracle/5.1.3

    【讨论】:

    【解决方案3】:

    对我来说,问题是我通过 DOS pip 安装了 cx_Oracle,将其更改为小写。通过 Git Bash 安装它而不是保持混合大小写。

    【讨论】:

    • 就是这样。我使用“pip install cx_Oracle”重新安装,大写“O”,它导入成功。谢谢你,MrDBA。
    【解决方案4】:

    在我的情况下,解决方案是使用:

    python3 -m pip install cx_Oracle --upgrade --user
    

    而不是

    pip3 install cx_Oracle
    

    这是由于pip中的一些混乱造成的,所以我没有正确安装cx_Oracle

    # python3 -m pip -V 
    pip 18.1 from /usr/lib/python3/dist-packages/pip (python 3.7)
    
    # pip3 -V
    pip 21.2.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
    

    我希望它能挽救一个人几个小时的生命......

    【讨论】:

      【解决方案5】:

      我刚刚遇到了同样的问题。首先,您需要为您的操作系统安装适当的 Oracle 客户端。就我而言,要在 Ubuntu x64 上安装它,我已按照此说明进行操作 https://help.ubuntu.com/community/Oracle%20Instant%20Client#Install_RPMs

      然后,您需要安装 cx_Oracle,一个用于连接 Oracle 客户端的 Python 模块。同样,假设你在 64 位机器上运行 Ubuntu,你应该输入一个 shell:

      wget -c http://prdownloads.sourceforge.net/cx-oracle/cx_Oracle-5.0.4-11g-unicode-py27-1.x86_64.rpm
      sudo alien -i cx_Oracle-5.0.4-11g-unicode-py27-1.x86_64.rpm
      

      如果您安装了 Python 2.7.x,这将适用于 Oracle 11g,但您可以在 http://cx-oracle.sourceforge.net/ 下载不同的 cx_Oracle 版本 要检查您使用的是哪个 Python 版本,请在终端中输入:

      python -V
      

      希望对你有帮助

      【讨论】:

      • 所以客户端/驱动程序不包含在 cx_Oracle 模块本身中?
      【解决方案6】:

      我遇到了类似的问题,你必须确保你有:

      1. oracle 即时客户端
      2. cx_Oracle 二进制文件(来自 SourceForge)
      3. 蟒蛇 重要提示:确保它们都是 64 位或 32 位,混合会导致问题

      【讨论】:

        【解决方案7】:

        Windows 和 Anaconda 帮助

        Anaconda 4.3.0 以 Python 3.6 作为根。目前 cx_Oracle 最多只支持 3.5。我尝试在 envs 中创建 3.5 环境,但是在运行 cx_Oracle-5.2.1-11g.win-amd64-py3.5.exe 时,它​​仅针对 3.6 安装在 root 中

        我能找到的唯一解决方法是将根环境从 3.6 更改为 3.5:

        activate root
        conda update --all python=3.5
        

        完成后运行 cx_Oracle-5.2.1-11g.win-amd64-py3.5.exe。

        用导入测试它并且工作正常。

        import CX_Oracle
        

        【讨论】:

        • 我目前有一个使用 Python3.6 与 cx_Oracle 一起工作的 conda env(仅在 Pycharm 中而不是 ipython 中),因此自发布以来这可能已经改变。
        【解决方案8】:

        要从 python 访问 Oracle,您需要(另外)cx_Oracle module。该模块必须位于系统 python 路径中,或者您必须设置适当的 PYTHONPATH。

        【讨论】:

          【解决方案9】:

          Unknown92 回答帮助了我(在 Windows 上)。 请注意,所有版本都必须适合。

          我已经下载了cx_Oracle here,文件 cx_Oracle-5.2.1-12c.win-amd64-py3.5.exe 用于我:

          • Python 3.5.1 64 位。出于某种原因,主页上的默认下载链接是 32 位版本的。
          • 和oracle实例客户端12.1.0.2.0(文件名为instantclient-basic-windows.x64-12.1.0.2.0.zip)here

          【讨论】:

          • 太棒了!要安装 Oracle 库,请向下滚动到页面末尾并阅读 安装 部分。
          • 我在想,文件名看起来像 64 位,仅适用于 AMD 处理器!我正在使用 Python 3.5 + Oracle 11g + Intel Xeon 64 位处理器。 6.1是最新版本。即使现在仍然不包括英特尔 64 位处理器。 pypi.python.org/pypi/cx_Oracle/6.1 此处引用:cx-oracle.readthedocs.io/en/latest/… 如果您的体系结构可用,这将下载并安装预编译的二进制文件。如果预编译的二进制文件不可用,将下载、编译源代码并安装生成的二进制文件。
          【解决方案10】:

          虽然是个愚蠢的错误,但请确保使用正确的模块名称并尊重大写

          我在我的 Windows 机器上通过命令行将这个包安装为pip install cx_oracle。在 spyder 中将其导入为cx_oracle 时,它一直出现以下错误:

          ModuleNotFoundError: No module named 'cx_oracle'.

          在将导入命令中的模块名称更正为cx_Oracle(即,capital letter oracle 中的“O”)后,导入成功。

          【讨论】:

            猜你喜欢
            • 2014-07-17
            • 2017-08-20
            • 2017-12-08
            • 2013-09-14
            • 2011-07-26
            • 2015-02-27
            • 1970-01-01
            • 2016-08-30
            • 2017-02-20
            相关资源
            最近更新 更多