cx_Oracle 8 安装 (macOS Big Sur)
cx_Oracle 8 Installation (macOS Big Sur)
问题声明:
我目前正在开发 macOS Big Sur 并尝试 运行 并在 macOs Big Sur[=45] 上安装 cx_Oracle 8 =].按照文档中列出的步骤进行操作后,我在启动时仍然收到以下错误。
2022-01-28 10:20:27,085 - root - ERROR - MainThread - 4488076800 - Oracle-Error-Code:0
2022-01-28 10:20:27,086 - root - ERROR - MainThread - 4488076800 - Oracle-Error-Message:DPI-1047: Cannot locate a 64-bit Oracle Client library: "dlopen(libclntsh.dylib, 1): no suitable image found.
注意: 我当然安装了 package pip install cx-Oracle
并且正在正确导入 import cx_Oracle
我尝试了什么?
我尝试了以下但没有成功
将即时客户端提取到 /opt/oracle/instantclient_19_8
$ ln -s /opt/oracle/instantclient_19_8/libclntsh.dylib /usr/local/lib/
和
mkdir ~/lib
ln -s /opt/oracle/instantclient_19_8/libclntsh.dylib ~/lib/
我确实遇到了一个有希望的错误,但是,我不知道接下来要做什么'try'
Did find:
/xxx/xxx/lib/libclntsh.dylib: stat() failed with errno=62". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help
enter code here
变通
我确实有一个变通办法,其中包括在我下载的客户端中添加一个带有 link 的初始化程序,如您所见,这并不理想,因为您必须为每个客户端输入和输出回购,根据需要,永远不想在时机成熟时将其提交给 git。
import cx_Oracle
cx_Oracle.init_oracle_client(lib_dir=f'/xxx/xxx/xxx/instantclient_19_8')
macOS 限制了库的使用,这很痛苦。
macOS 上有两种解决方案:
- 根据您的发现使用
cx_Oracle.init_oracle_client()
。我倾向于这样写:
if platform.system() == "Darwin":
cx_Oracle.init_oracle_client(lib_dir=os.environ.get("HOME")+"/Downloads/instantclient_19_8")
- 在包含您喜欢的 cx_Oracle 模块库的目录中创建一个符号 link:
cjones@mac:~$ python
Python 3.9.6 (default, Aug 20 2021, 13:36:17)
[Clang 12.0.5 (clang-1205.0.22.11)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>> cx_Oracle
<module 'cx_Oracle' from '/Users/cjones/.pyenv/versions/3.9.6/lib/python3.9/site-packages/cx_Oracle.cpython-39-darwin.so'>
>>>
cjones@mac:~$ ln -s ~/Downloads/instantclient_19_8/libclntsh.dylib /Users/cjones/.pyenv/versions/3.9.6/lib/python3.9/site-packages/
当 Oracle 发布 'thin' Python 驱动程序时,您将不需要 Instant Client,也不需要执行这些操作。
问题声明:
我目前正在开发 macOS Big Sur 并尝试 运行 并在 macOs Big Sur[=45] 上安装 cx_Oracle 8 =].按照文档中列出的步骤进行操作后,我在启动时仍然收到以下错误。
2022-01-28 10:20:27,085 - root - ERROR - MainThread - 4488076800 - Oracle-Error-Code:0
2022-01-28 10:20:27,086 - root - ERROR - MainThread - 4488076800 - Oracle-Error-Message:DPI-1047: Cannot locate a 64-bit Oracle Client library: "dlopen(libclntsh.dylib, 1): no suitable image found.
注意: 我当然安装了 package pip install cx-Oracle
并且正在正确导入 import cx_Oracle
我尝试了什么?
我尝试了以下但没有成功
将即时客户端提取到 /opt/oracle/instantclient_19_8
$ ln -s /opt/oracle/instantclient_19_8/libclntsh.dylib /usr/local/lib/
和
mkdir ~/lib
ln -s /opt/oracle/instantclient_19_8/libclntsh.dylib ~/lib/
我确实遇到了一个有希望的错误,但是,我不知道接下来要做什么'try'
Did find:
/xxx/xxx/lib/libclntsh.dylib: stat() failed with errno=62". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help
enter code here
变通
我确实有一个变通办法,其中包括在我下载的客户端中添加一个带有 link 的初始化程序,如您所见,这并不理想,因为您必须为每个客户端输入和输出回购,根据需要,永远不想在时机成熟时将其提交给 git。
import cx_Oracle
cx_Oracle.init_oracle_client(lib_dir=f'/xxx/xxx/xxx/instantclient_19_8')
macOS 限制了库的使用,这很痛苦。
macOS 上有两种解决方案:
- 根据您的发现使用
cx_Oracle.init_oracle_client()
。我倾向于这样写:
if platform.system() == "Darwin":
cx_Oracle.init_oracle_client(lib_dir=os.environ.get("HOME")+"/Downloads/instantclient_19_8")
- 在包含您喜欢的 cx_Oracle 模块库的目录中创建一个符号 link:
cjones@mac:~$ python
Python 3.9.6 (default, Aug 20 2021, 13:36:17)
[Clang 12.0.5 (clang-1205.0.22.11)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
>>> cx_Oracle
<module 'cx_Oracle' from '/Users/cjones/.pyenv/versions/3.9.6/lib/python3.9/site-packages/cx_Oracle.cpython-39-darwin.so'>
>>>
cjones@mac:~$ ln -s ~/Downloads/instantclient_19_8/libclntsh.dylib /Users/cjones/.pyenv/versions/3.9.6/lib/python3.9/site-packages/
当 Oracle 发布 'thin' Python 驱动程序时,您将不需要 Instant Client,也不需要执行这些操作。