The content of the new sh file is as follows: Run this file as su user
#!/bin/bash # INSTALL ORACLE INSTANT CLIENT ################################## # NOTE: Oracle requires at least 1176 MB of swap (or something around there).# If you are using CentOS in a VMWare VM, there's a good chance that you don't have enough by default.# If this describes you and you need to add more swap, see the# "Adding a Swap File to a CentOS System" section, here:# http://www.techotopia.com/index.php/Adding_and_Managing_CentOS_Swap_Space # Install basic dependenciessudo yum -y install libaio bc flex echo "Now go get some the following two RPMs ..."echo "- basic: oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm"echo "- SDK/devel: oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64"echo "... from this URL: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html"echo "WARNING: It's pretty annoying, they make you sign up for an Oracle account, etc."echo 'I will assume you have put these two files are into the same folder'echo "Press any key once you're ready" && read -n 1 -s sudo rpm -ivh oracle-instantclient12.1-basic-*sudo rpm -ivh oracle-instantclient12.1-devel-* # SET ENVIRONMENT VARIABLES ############################## # Source for this section: http://cx-oracle.sourceforge.net/BUILD.txt # (SIDENOTE: I had to alter it by doing some digging around for where the Oracle RPMs really installed to;# if you ever need to do this, do a command like this:# rpm -qlp <rpm_file_of_concern.rpm>) echo '# Convoluted undocumented Oracle bullshit.' >> $HOME/.bashrcecho 'export ORACLE_VERSION="12.1"' >> $HOME/.bashrcecho 'export ORACLE_HOME="/usr/lib/oracle/$ORACLE_VERSION/client64/"' >> $HOME/.bashrcecho 'export PATH=$PATH:"$ORACLE_HOME/bin"' >> $HOME/.bashrcecho 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$ORACLE_HOME/lib"' >> $HOME/.bashrc. $HOME/.bashrc # INSTALL cx_Oracle ###################### pip install cx_Oracle
If an error occurs, download the source code of cx_Oracle 5.12 and compile it at http://cx-oracle.sourceforge.net/. modify the filesToCheck = [("11g ","
"), (" 10g "," libclntsh. so.10.1 "), (" 9i "," libclntsh. so.9.0 ") because the instantclient12.1 we installed is version 12.1, the path to the check file before installation should be libclntsh. so.12.1. In python3, import cx_Oracle. If no error is reported, the installation is successful.
If ImportError: libclntsh appears. so.11.1: cannot open shared object file: No such file or directory indicates that the path is incorrect and is not loaded. # find/-name libclntsh. so. * The actual path obtained is
/usr/lib/oracle/12.1/client64/lib/libclntsh.so.12.1
Edit/etc/ld. so. conf
Gedit/etc/ld. so. conf
Enter the obtained path in the last line.
/Usr/lib/oracle/12.1/client64/lib/
Don't forget the last # ldconfig