【问题标题】:cx_Oracle not found although installed by Conda尽管由 Conda 安装,但未找到 cx_Oracle
【发布时间】:2018-08-01 04:18:46
【问题描述】:

我正在使用一个盒子,出于安全原因,它无法访问互联网。

我已经在盒子上安装了 Anaconda:

  • python --version # => Python 3.6.5 :: Anaconda, Inc.
  • which python #=> /home/current_user/anaconda3/bin/python

我还安装了cx_oracle 包和oracle-instantclient,方法是下载适当的存档并安装包。证明:

$ conda install cx_oracle-6.3.1-py36h14c3975_0.tar.bz2
$ conda install oracle-instantclient-11.2.0.4.0-0.tar.bz2
$ conda list | grep oracle
cx_oracle                 6.3.1            py36h14c3975_0    <unknown>
oracle-instantclient      11.2.0.4.0                    0    <unknown>

尽管出于某种原因,Python 找不到 cx_Oracle 模块,尽管能够找到我安装的其他几个模块。

$ python -c "import cx_Oracle"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'cx_Oracle'

$ conda install python-dotenv-0.8.2-py_1.tar.bz2
$ python -c "import dotenv"
# => No problem

【问题讨论】:

  • 你确定python 指向conda 的解释器吗? which python 显示什么?
  • 我确定。我已将问题更新为更清楚。
  • 可能不相关,但你永远不应该这样做conda install /path/to/tarball,因为它不会安装依赖项。你应该总是这样做conda install &lt;name-of-package&gt;
  • 这是不可能的,因为我没有互联网接入,所以我通常手动查找依赖项并下载它们。幸运的是,cx_Oracle 没有任何依赖关系:github.com/oracle/python-cx_Oracle/blob/master/setup.py
  • 请使用最近来自oracle.com/technetwork/database/database-technologies/…的即时客户端

标签: python anaconda conda


【解决方案1】:
$ python -c "import cx_Oracle"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'cx_Oracle'

cx_oracle 安装在 conda 环境中。它可以是 conda base 或 conda root(取决于版本)执行:

 $ conda activate

你会看到环境激活

(base)  $

然后再试一次

(base)  $ python -c "import cx_Oracle"

您也可以使用conda info --envs查看您电脑上的环境

【讨论】:

  • 我认为你需要安装 oracle-intantclient 但在机器上,而不是在 conda 上。你试过了吗? oracle.com/technetwork/database/database-technologies/…
  • 是的,但是如果缺少该库,则会出现不同的错误。
  • @fny 请问出现了什么新错误以及为什么您宁愿出现此错误?
【解决方案2】:

我知道这篇文章有点老了,但是对于现在遇到这篇文章的任何使用 PyCharm 的人来说,我的问题实际上是 Pycharm 的问题,而不是我的 conda 安装问题。运行'conda list | grep oracle' 应该显示它是否安装在您的环境中:

(stats-gatherer) λ conda list | grep oracle
cx_oracle                 7.1.3            py36h2fa13f4_0    /

对我来说,Pycharm 能够在重启后通过选择 File -> Invalidate Caches / Restart 找到 cx_Oracle。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    相关资源
    最近更新 更多