drno-reg
@drno-reg
см не кратко

Почему UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 100: invalid continuation byte при install cx_Oracle?

Здравствуйте.

При инсталляции пакета cx_Oracle на windows 10 x64, python 3.6.1 x64, Visual Studio 2017 + Visual C++ 2015 возникает ошибка
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 100: invalid continuation byte

подробно

C:\Windows\system32>pip install cx_Oracle
Collecting cx_Oracle
  Using cached cx_Oracle-5.3.tar.gz
Installing collected packages: cx-Oracle
  Running setup.py install for cx-Oracle ... error
Exception:
Traceback (most recent call last):
  File "c:\python36\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str
    return s.decode(sys.__stdout__.encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 100: invalid continuation byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\python36\lib\site-packages\pip\basecommand.py", line 215, in main
    status = self.run(options, args)
  File "c:\python36\lib\site-packages\pip\commands\install.py", line 342, in run
    prefix=options.prefix_path,
  File "c:\python36\lib\site-packages\pip\req\req_set.py", line 784, in install
    **kwargs
  File "c:\python36\lib\site-packages\pip\req\req_install.py", line 878, in install
    spinner=spinner,
  File "c:\python36\lib\site-packages\pip\utils\__init__.py", line 676, in call_subprocess
    line = console_to_str(proc.stdout.readline())
  File "c:\python36\lib\site-packages\pip\compat\__init__.py", line 75, in console_to_str
    return s.decode('utf_8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe4 in position 100: invalid continuation byte


Прошу помочь решить проблему.

p.s. на windows 2012 x64 и python 3.6.1 x64 все взлетело нормально :-(
  • Вопрос задан
  • 5823 просмотра
Решения вопроса 1
drno-reg
@drno-reg Автор вопроса
см не кратко
проблему удалось решить путем полного отката Visual Studio 2017...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@AlexMt
Automation Q&A Lead
К сожалению, никто из здесь присутствующих (скорее всего) не писал setup.py скрипт для установки данной библиотеки, поэтому ( опять же скорее всего ) вам лучше обратиться на github/oracle/python-cx_Oracle к владельцам репозитория и создать новый issue с описанием этой проблемы

Или же попробовать скачать исходники, разобраться в том как устроен установщик, и поправить его самостоятельно :)
Ответ написан
@n1sh
Тут у питона не получается декодировать ошибку, которую генерирует cx_Oracle, потому что это ошибка импорта dll текст которой возвращает windows в кодировке 1251.
Если интересно - её (ошибку) посмотреть можно вот так:
try:
    import cx_Oracle
except Exception as ex:
    print(ex.object.decode('1251'))

В моём случае в системе стоял win32 клиент, а cx_Oracle - x64.
Полечилось скачиванием клиента Oracle Instant Client Zip , и вытаскиванием из архива ora*.dll и oci*.dll в папку \Library\bin нужного окружения анаконды.
Таким макаром (т.к. activate добавляет в path этот путь) - в окружении и только в нём "видится" нужный клиент оракла с минимальными телодвижениями.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы