cx_Oracle не распознается питоном - PullRequest
0 голосов
/ 25 апреля 2018

ОБНОВЛЕНИЕ: Точное решение в комментариях под помеченным ответом.


В корпоративной среде 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 - нет. Что я тут не так делаю?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы, похоже, используете Python 2.7, но установленный вами cx_Oracle предназначен для Python 3.4!cx_Oracle - это чистый модуль C, поэтому он будет работать только в том Python, для которого он был скомпилирован.Другой модуль (openpyxl) имеет чистые модули Python, поэтому он будет хотя бы частично загружен.Вам нужно будет запустить Python 3.4 или переустановить оба модуля для Python 2.7.

...