Python:import cx_Oracle ImportError:没有名为cx_Oracle的模块错误

时间:2012-03-28 13:00:36

标签: python

我尝试在.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

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

10 个答案:

答案 0 :(得分:3)

Windows帮助:

  1. 获取即时客户端。它没有安装exe。只需将其复制到某处。
  2. 将目录放入PATH变量。
  3. 转到命令提示符并设置2个变量 - 例如:

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

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

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

答案 1 :(得分:2)

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

  1. oracle即时客户端
  2. cx_Oracle binary(来自SourceForge)
  3. 的Python 重要提示:确保它们全部是64位或32位,混合会导致问题

答案 2 :(得分:2)

尝试通过以上答案中公布的rpm安装它,但它没有奏效。相反的是普通pip install

pip install cx_oracle

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

我刚遇到同样的问题。首先,您需要为您的操作系统安装适当的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

我希望它有所帮助

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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时,它只在root用户安装3.6

我唯一能找到的解决方法是将根环境从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

答案 7 :(得分:1)

就我而言,解决方案是使用:

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)

我希望它可以挽救某人几个小时的生命......

答案 8 :(得分:0)

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

答案 9 :(得分:-1)

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

我通过命令行在我的 Windows 机器上以 pip install cx_oracle 的形式安装了这个包。在 spyder 中将其作为 cx_oracle 导入时,它不断给出以下错误:

ModuleNotFoundError: No module named 'cx_oracle'

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