You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Linux 7中cx_Oracle安装后无法导入问题求助

cx_Oracle模块无法导入问题排查

问题描述

在Oracle 19 Appliance(基于Oracle Linux 7)环境中,按Oracle官方步骤安装python36-cx_Oracle后,安装显示成功,但在Python 3.11和Python 2.7中执行import cx_oracle均提示模块未找到,已检查环境变量与路径配置,问题仍未解决。

已执行的安装步骤

为Python 3安装cx_Oracle的操作:

$ sudo yum -y install oraclelinux-developer-release-el7
$ sudo yum -y install oracle-instantclient-release-el7
$ sudo yum -y install python36-cx_Oracle

相关命令输出

已安装包检查

[oracle@localhost tmp]$ yum list installed |grep cx
python36-cx_Oracle.x86_64              8.3.0-1.el7                 @ol7_developer
[oracle@localhost tmp]$ yum list installed |grep instant
oracle-instantclient-basic.x86_64      21.8.0.0.0-1                @ol7_oracle_instantclient21
oracle-instantclient-release-el7.x86_64

cx_Oracle包搜索结果

[oracle@localhost ~]$ yum search cx_oracle
已加载插件:langpacks, ulninfo
============================================================= 匹配cx_oracle的N/S ==============================================================
cx_Oracle-12c-py27.x86_64 : Oracle的Python接口
cx_Oracle-py27.x86_64 : Oracle的Python接口
python-cx_Oracle.x86_64 : Oracle的Python接口
python-cx_Oracle-12c.x86_64 : Oracle的Python接口
python36-cx_Oracle.x86_64 : Oracle的Python接口

仅匹配名称和摘要,请使用\"search all\"查看全部。

重新安装确认

[oracle@localhost ~]$ sudo yum install python36-cx_Oracle.x86_64
已加载插件:langpacks, ulninfo
已安装 python36-cx_Oracle-8.3.0-1.el7.x86_64 并且是最新版本
无需任何处理

Python导入测试

[oracle@localhost ~]$ python3
Python 3.11.0 (main, Nov 26 2022, 17:15:54) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44.0.3)] on linux
输入\"help\", \"copyright\", \"credits\"或\"license\"获取更多信息。
>>> import cx_oracle
Traceback (most recent call last):
  File \"<stdin>\", line 1, in <module>
ModuleNotFoundError: No module named 'cx_oracle'
>>> quit()
[oracle@localhost ~]$ python
Python 2.7.5 (default, Jul  1 2022, 08:35:16) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44.0.3)] on linux2
输入\"help\", \"copyright\", \"credits\"或\"license\"获取更多信息。
>>> import cx_oracle
Traceback (most recent call last):
  File \"<stdin>\", line 1, in <module>
ImportError: No module named cx_oracle
>>> quit()

Python版本及路径

[oracle@localhost ~]$ python --version
Python 2.7.5
[oracle@localhost ~]$ python3 --version
Python 3.11.0
[oracle@localhost ~]$ which python
/usr/bin/python
[oracle@localhost ~]$ which python3
/usr/local/bin/python3

环境变量信息

[oracle@localhost ~]$ echo $PATH
/home/oracle/Desktop/Database_Track/coffeeshop:/home/oracle/java/jdk1.8.0_201/bin:/home/oracle/bin:/home/oracle/sqlcl/bin:/home/oracle/sqldeveloper:/home/oracle/datamodeler:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oracle/sqlcl/bin:/home/oracle/sqldeveloper:/home/oracle/bin:/home/oracle/.local/bin:/home/oracle/bin
[oracle@localhost ~]$ echo $ORACLE_BASE
/u01/app/oracle
[oracle@localhost ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/version/db_1
[oracle@localhost ~]$ echo $LD_LIBRARY_PATH
/usr/lib/oracle/21/client64/lib/
[oracle@localhost ~]$ echo $LD_LIBRARY_PATH64
/usr/lib/oracle/21/client64/lib/

完整环境变量输出

[oracle@localhost ~]$ env
XDG_SESSION_ID=2
HOSTNAME=localhost.localdomain
SELINUX_ROLE_REQUESTED=
TERM=xterm-256color
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.59.1 65195 22
SELINUX_USE_CURRENT_RANGE=
SSH_TTY=/dev/pts/2
USER=oracle
LD_LIBRARY_PATH=/usr/lib/oracle/21/client64/lib/
TWO_TASK=ORCL
LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:
LD_LIBRARY_PATH64=/usr/lib/oracle/21/client64/lib/
GNOME_CHECK=1
ORACLE_BASE=/u01/app/oracle
MAIL=/var/spool/mail/oracle
PATH=/home/oracle/Desktop/Database_Track/coffeeshop:/home/oracle/java/jdk1.8.0_201/bin:/home/oracle/bin:/home/oracle/sqlcl/bin:/home/oracle/sqldeveloper:/home/oracle/datamodeler:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oracle/sqlcl/bin:/home/oracle/sqldeveloper:/home/oracle/bin:/home/oracle/.local/bin:/home/oracle/bin
PWD=/home/oracle
JAVA_HOME=/home/oracle/java/jdk1.8.0_201
LANG=en_US.UTF-8
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/home/oracle
LOGNAME=oracle
JAVAENV=true
XDG_DATA_DIRS=/home/oracle/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
SSH_CONNECTION=192.168.59.1 65195 192.168.59.130 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
TMZ=GMT
XDG_RUNTIME_DIR=/run/user/1000
ORACLE_HOME=/u01/app/oracle/product/version/db_1
_=/usr/bin/env

问题原因及解决方案

核心原因

  1. Python版本不兼容:yum安装的python36-cx_Oracle是为系统自带的Python 3.6编译的,而你使用的Python 3.11是自行编译安装在/usr/local/bin的独立版本,两者模块路径不互通,因此无法识别该模块。
  2. Python 2.7未安装对应包:你未为Python 2.7安装适配的cx_Oracle包,yum搜索结果中的cx_Oracle-py27.x86_64才是对应版本。

解决方案

针对Python 3.11

使用Python 3.11自带的pip安装适配版本:

/usr/local/bin/python3 -m pip install cx_Oracle

注:你的LD_LIBRARY_PATH已配置正确,无需额外调整Oracle客户端环境。

针对Python 2.7

通过yum安装适配包:

sudo yum install cx_Oracle-py27.x86_64

安装完成后即可在Python 2.7中导入使用。

可选方案(使用系统自带Python 3.6)

若无需Python 3.11,可直接使用系统自带的Python 3.6(路径通常为/usr/bin/python3),此时yum安装的python36-cx_Oracle可直接导入。


内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:05:40