【问题标题】:Does the pip option "--force-reinstall" recompiles a module? (I'm trying to reinstall cx_Oracle)pip 选项“--force-reinstall”是否重新编译模块? (我正在尝试重新安装 cx_Oracle)
【发布时间】: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 有问题...

标签: python pip cx-oracle


【解决方案1】:

您的问题的答案(尽管您似乎遇到了另一个问题)如下: 这取决于模块的结构。如果它的设置脚本调用编译器,那么是的。因为,你看,默认情况下 pip 模块不包含编译部分,这取决于模块作者提供它们。

【讨论】:

  • 嗯...有趣,我不知道。谢谢费库鲁。
【解决方案2】:

我终于可以安装了。问题是我不得不使用我的virtualenv 的python。一个简单的解决方案,但我完全错过了。

步骤:

pip download cx_Oracle
tar -xvf cx_Oracle-5.2.1.tar.gz
~/myenv/bin/python setup.py -v build
sudo ~/myenv/bin/python setup.py install

请注意,我必须在最后一步中使用 sudo。没有这个我有这个权限错误:

error: could not create 'build/bdist.linux-x86_64/egg': Permission denied

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 2020-05-06
    • 2017-06-15
    • 1970-01-01
    • 2021-03-16
    • 2023-03-04
    • 1970-01-01
    • 2017-09-18
    相关资源
    最近更新 更多