【发布时间】:2017-03-28 15:19:16
【问题描述】:
我的设置有:
- oracle-instantclient (downgraded from 12 to 11)
- Virtual Environment with Python + Django + cx_Oracle
当我降级 oracle-instantclient 时,我尝试使用以下命令重新安装 cx_oracle:
pip install --upgrade --force-reinstall cx_Oracle
问题是cx_Oracle一直在抱怨我没有使用之前安装的12版:
$ python -c "import cx_Oracle"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: libclntsh.so.12.1: cannot open shared object file: No such file or directory
所以,这里有一些问题:“--force-reinstall”不应该进行完全重新安装,包括重新编译模块(又名 cx_Oracle)?有人对如何解决此问题有一些建议?我查看了pip manual 并告诉我它重新安装了软件包。不是很有用。
更新1:
我尝试遵循解决方案here,将我的 cx_Oracle 路径添加到 LD_LIBRARY_PATH 但它仍然无法正常工作。
echo $LD_LIBRARY_PATH
/usr/lib/oracle/11.2/client64/lib:/home/myuser/myuserenv/lib/python3.5/site-packages/cx_Oracle-5.2.1.dist-info
请注意,我的 root 用户使用不同的 python,而我的 virtualenv 使用自己的 python 安装。
[root@myserver]# which python
/usr/bin/python
来自我的虚拟环境:
(myvirtualenv) [myuser@myserver]$ which python
~/myvirtualenv/bin/python
是否有某种方法可以使用我的 root 用户手动安装 cx_Oracle,但以某种方式将文件放在虚拟环境中?
更新2:
我尝试下载 cx_Oracle 并使用以下命令手动编译:
sudo -u myuser ~/myvirtualenv/bin/python setup.py build install
但现在我看到了一些权限错误:
(...)
error: could not create 'build/bdist.linux-x86_64/egg': Permission denied
我做对了吗?我不想弄乱这个环境。谢谢。
【问题讨论】:
-
不,重新安装无济于事。将 cx_Oracle 库的路径添加到您的
LD_LIBRARY_PATH环境变量中。 stackoverflow.com/questions/11654090/… -
嗯...我试过但没有用...我导出了我的 LD_LIBRARY_PATH 以添加 ...[myvirtualenv]/lib/python3.5/site-packages 和 /lib/python3 .5/site-packages/cx_Oracle-5.2.1.dist-info,但仍然有同样的错误......还有其他建议吗?
-
请注意,我可以使用 sqlplus 没有任何问题,所以只是 cx_Oracle 有问题...