据我了解,有一些与SIP有关的变化使得安装这一点变得困难.
这些页面有安装的背景和建议. http://sourceforge.net/p/cx-oracle/mailman/message/34534872/,http://stefanoapostolico.com/2015/10/08/install_cx_oracle_with_sip_enabled.html
把所有这些放在一起,这是我最好的把它安装到我的virtualenv,但唉,仍然没有好处.
我得到的错误是:
Traceback (most recent call last): File "<string>",line 1,in <module> ImportError: dlopen(/Users/me/sx_direct_env/lib/python2.7/site-packages/cx_Oracle.so,2): Library not loaded: /b/227/rdbms/lib/libclntsh.dylib.10.1 Referenced from: /Users/me/sx_direct_env/lib/python2.7/site-packages/cx_Oracle.so Reason: image not found
以下是我的所有安装步骤:
$cd /Users/me/sx_direct_env/lib/python2.7 $mkdir oracle $cd oracle $export ORACLE_HOME=$PWD $export DYLD_LIBRARY_PATH=$ORACLE_HOME $export LD_LIBRARY_PATH=$ORACLE_HOME $export PATH=$PATH:$ORACLE_HOME $unzip ~/Downloads/instantclient-basic-macos.x64-11.2.0.4.0.zip $unzip ~/Downloads/instantclient-sdk-macos.x64-11.2.0.4.0.zip $mv instantclient_11_2/* . $rmdir instantclient_11_2 $curl -O https://raw.githubusercontent.com/kubo/fix_oralib_osx/master/fix_oralib.rb $ruby -a fix_oralib.rb adrci: add rpath: @loader_path change install name from: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 to: @rpath/libclntsh.dylib.11.1 change install name from: /ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11.dylib to: @rpath/libnnz11.dylib genezi: add rpath: @loader_path change install name from: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 to: @rpath/libclntsh.dylib.11.1 libclntsh.dylib.11.1: add rpath: @loader_path change identification name from: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 to: @rpath/libclntsh.dylib.11.1 change install name from: /ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11.dylib to: @rpath/libnnz11.dylib libnnz11.dylib: change identification name from: /ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11.dylib to: @rpath/libnnz11.dylib libocci.dylib.11.1: change identification name from: /ade/b/3071542110/oracle/rdbms/lib/libocci.dylib.11.1 to: @rpath/libocci.dylib.11.1 libociei.dylib: add rpath: @loader_path change install name from: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 to: @rpath/libclntsh.dylib.11.1 libocijdbc11.dylib: add rpath: @loader_path change install name from: /ade/b/2475221476/oracle/rdbms/lib/libclntsh.dylib.11.1 to: @rpath/libclntsh.dylib.11.1 change install name from: /ade/b/2475221476/oracle/ldap/lib/libnnz11.dylib to: @rpath/libnnz11.dylib uidrvci: add rpath: @loader_path change install name from: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 to: @rpath/libclntsh.dylib.11.1 change install name from: /ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11.dylib to: @rpath/libnnz11.dylib $pip install cx_oracle Collecting cx-oracle Installing collected packages: cx-oracle Successfully installed cx-oracle-5.2 $python -c "import cx_Oracle" Traceback (most recent call last): File "<string>",2): Library not loaded: /b/227/rdbms/lib/libclntsh.dylib.10.1 Referenced from: /Users/me/sx_direct_env/lib/python2.7/site-packages/cx_Oracle.so Reason: image not found
尝试使用Oracle instantclient 12.1尝试安装cx_Oracle时,我尝试了上述操作并出现以下错误:
[535]: /opt/instantclient_12_1 $python -c "import cx_Oracle" Traceback (most recent call last): File "<string>",in <module> ImportError: dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so,2): Library not loaded: @rpath/libclntsh.dylib.12.1 Referenced from: /Library/Python/2.7/site-packages/cx_Oracle.so Reason: image not found
注意错误中的@rpath – 事实证明,当在El Capitan上构建cx_Oracle库(对于instantclient 12.1)时,gcc编译器需要设置-rpath标志以知道在哪里找到上述动态链接库(*. dylib).默认情况下,在instantclient 12.1上,pip不会为您执行此操作.
# Set -rpath option before installing...this will use $ORACLE_HOME during compilation export FORCE_RPATH=TRUE pip install cx_Oracle # And verify cx_Oracle was correctly installed python -c "import cx_Oracle" # If this line fails install cx_Oracle with: # pip install --no-cache-dir --allow-external --allow-unverified cx_oracle
python -c“import cx_Oracle”应该报告没有错误.
有关完整的安装指南(包括即时客户端下载和配置),请查看我在http://thelaziestprogrammer.com/sharrington/databases/oracle/install-cx_oracle-mac的帖子了解详细信息.