macOS下python导入错误cx_Oracle

2024-04-16 21:17:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有MacOSSierra10.12.3,我需要通过python连接到Oracle数据库。我使用pip在these instructions之后安装了cxu Oracle。在ipython(Python 3.5.2 | Anaconda 4.2.0(x86_64))中导入cx|Oracle时,收到以下错误消息:

In [1]: import cx_Oracle
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-d1ecebcba3d2> in <module>()
----> 1 import cx_Oracle

ImportError: dlopen(/Users/dufoudav/anaconda/lib/python3.5/site-packages/cx_Oracle.cpython-35m-darwin.so, 2): Library not loaded: @rpath/libclntsh.dylib.12.1
    Referenced from: /Users/dufoudav/anaconda/lib/python3.5/site-packages/cx_Oracle.cpython-35m-darwin.so
        Reason: image not found

有什么办法解决这个问题吗?在


Tags: importsolibpackagesipythonsitenotanaconda
1条回答
网友
1楼 · 发布于 2024-04-16 21:17:20

安装用于Python/Mac OS Sierra的cx®Oracle

Oracle下载以下文件

instantclient-basic-macos.x64-12.1.0.2.0.zip instantclient-sdk-macos.x64-12.1.0.2.0.zip

创建目录/usr/local/lib/share/oracle

export ORACLE_HOME=/usr/local/lib/share/oracle
export VERSION=12.1.0.2.0
export ARCH=x86_64

mkdir -p $ORACLE_HOME

将Instant Client Basic&SDK复制到/usr/local/lib/share/oracle

^{pr2}$

将两个文件解压到该目录:

cd $ORACLE_HOME
tar -xzf instantclient-basic-macos.x64-$VERSION.zip
tar -xzf instantclient-sdk-macos.x64-$VERSION.zip

/user/local/lib/share/oracle中的instant client文件夹中创建符号链接

cd instantclient_12_1
ln -s libclntsh.dylib.12.1 libclntsh.dylib
ln -s libocci.dylib.12.1 libocci.dylib

export DYLD_LIBRARY_PATH=$ORACLE_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME

现在您可以删除您下载的zip文件,因为它们不再需要了

cd /usr/local/lib/share/oracle
rm instantclient-basic-macos.x64-$VERSION.zip
rm instantclient-sdk-macos.x64-$VERSION.zip

将/instantclient_12_1之外的所有文件和文件夹移动到父目录/usr/local/lib/share/oracle

mv  -v $ORACLE_HOME/instantclient_12_1/* /$ORACLE_HOME/
rm -rf instantclient_12_1/

现在应该可以安装cx_Oracle了。在

故障排除

如果您正在体验cx_Oracle.DatabaseError: ORA-21561: OID generation failed,请通过键入terminal来获得计算机的主机名

hostname

复制这个值并使用您最喜欢的文本编辑器将其添加到您的/etc/hosts文件中(本例中我使用的是vi)

vi /etc/hosts

在末尾有127.0.0.1 localhost的那一行上,放一个空格,然后输入前面给你的主机名。看,用你收到的macsname替换你的主机名

127.0.0.1       localhost MYMACSNAME

相关问题 更多 >