cx_Oracle python 无法识别

cx_Oracle not recognized by python

更新:确切的解决方案在标记答案下方的评论中。


在企业redhat linux环境中,Python似乎无法找到连接数据库所需的cx_Oracle包。查看日志:

[user@redhat ~]$ echo $PYTHONPATH
~/.local/lib/python3.4/site-packages
[user@redhat ~]$ cd $PYTHONPATH
[user@redhat site-packages]$ ls -l
total 1912
drwxrwxr-x  2 user user     131 Apr 20 12:00 cx_Oracle-6.2.1.dist-info
-rwxrwxr-x  1 user user 1900997 Apr 20 12:00 cx_Oracle.cpython-34m.so
-rw-rw-r--  1 user user     290 Apr 20 12:00 easy-install.pth
drwxrwxr-x  4 user user     114 Apr 20 12:00 et_xmlfile
drwxrwxr-x  2 user user     117 Apr 20 12:00 et_xmlfile-1.0.1-py3.4.egg-info
drwxrwxr-x  2 user user     150 Apr 20 12:00 jdcal-1.4.dist-info
-rw-rw-r--  1 user user   12553 Apr 20 12:00 jdcal.py
-rw-rw-r--  1 user user   13386 Apr 20 12:00 jdcal.pyc
drwxrwxr-x 21 user user    4096 Apr 20 12:00 openpyxl
drwxrwxr-x  2 user user     154 Apr 20 12:00 openpyxl-2.5.3-py3.4.egg-info
drwxrwxr-x  2 user user      61 Apr 23 12:00 __pycache__
-rw-rw-r--  1 user user    2389 Apr 23 12:00 site.py
-rw-rw-r--  1 user user    1743 Apr 23 12:00 site.pyc
[user@redhat site-packages]$ python
Python 2.7.5 (default, May  3 2017, 07:55:04)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named cx_Oracle
>>> import openpyxl
openpyxl/xml/__init__.py:15: UserWarning: The installed version of lxml is too old to be used with openpyxl
  warnings.warn("The installed version of lxml is too old to be used with openpyxl")
>>> exit()
[user@redhat site-packages]$

请注意 cx_Oracle 和 openpyxl 都是使用 pip 在单个命令中安装的:pip install --user cx_Oracle openpyxl 它们都在同一位置并以相同的方式拉入 python ,但是可以看到 openpyxl 而 cx_Oracle 没有。我在这里做错了什么?

您似乎是 运行ning Python 2.7,但您安装的 cx_Oracle 是 Python 3.4! cx_Oracle 是一个纯 C 模块,因此只能在编译它的 Python 中工作。另一个模块 (openpyxl) 具有纯 Python 模块,因此它至少会部分加载。您需要 运行 Python 3.4 或重新安装 Python 2.7.

的两个模块