Установка и задачи выполнения SQL Alchemy / Cx Oracle

Вопрос или проблема

Может кто-нибудь помочь мне понять, что здесь происходит? Я пытался запустить это из PowerShell и не могу заставить это работать. У меня установлен VSCode, и я также пытался запустить это там, а также сменил текущую директорию и интерпретатор. В результате я только получаю ошибку трассировки. Я также пытался установить oracleDB, но похоже, что cx_Oracle вызывается из sqlalchemy и вызывает эту ошибку.

Мой коллега не испытывает проблем с запуском, и это выдает ожидаемые результаты.

PS C:\Users\USERNAMEPLACEHOLDER\Downloads>python ib_newsletter_v2.py
Traceback (most recent call last):
  File "C:\Users\USERNAMEPLACEHOLDER\Downloads\ib_newsletter_v2.py", line 15, in <module>
    db = dl_db.DataLendDB('EQLVXRAIL-NJ-W2-ORCLDBPRD01.equilend.com', '1521', 'EQMRKT01', True)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USERNAMEPLACEHOLDER\Downloads\dl_IB.py", line 25, in __init__
    self.engine = create_engine(con_str)
                  ^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in create_engine
  File "C:\Users\USERNAMEPLACEHOLDER\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\sqlalchemy\util\deprecations.py", line 281, in warned
    return fn(*args, **kwargs)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USERNAMEPLACEHOLDER\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\sqlalchemy\engine\create.py", line 599, in create_engine
    dbapi = dbapi_meth(**dbapi_args)
            ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USERNAMEPLACEHOLDER\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\sqlalchemy\dialects\oracle\cx_oracle.py", line 1104, in import_dbapi
    import cx_Oracle
ModuleNotFoundError: No module named 'cx_Oracle'
PS C:\Users\USERNAMEPLACEHOLDER\Downloads> pip install sqlalchemy
Requirement already satisfied: sqlalchemy in c:\users\USERNAMEPLACEHOLDER\appdata\local\packages\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\localcache\local-packages\python311\site-packages (2.0.32)
Requirement already satisfied: typing-extensions>=4.6.0 in c:\users\USERNAMEPLACEHOLDER\appdata\local\packages\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\localcache\local-packages\python311\site-packages (from sqlalchemy) (4.12.2)
Requirement already satisfied: greenlet!=0.4.17 in c:\users\USERNAMEPLACEHOLDER\appdata\local\packages\pythonsoftwarefoundation.python.3.11_qbz5n2kfra8p0\localcache\local-packages\python311\site-packages (from sqlalchemy) (3.0.3)
PS C:\Users\USERNAMEPLACEHOLDER\Downloads>

Ответ или решение

Конечно, давайте разберемся с вашей проблемой, связанной с установкой и использованием библиотеки cx_Oracle и SQLAlchemy в Python.

Судя по представленному вами сообщению об ошибке, проблема заключается в том, что Python не может найти модуль cx_Oracle, который необходим для работы с Oracle Database через SQLAlchemy. Давайте поэтапно разберем возможные решения этой проблемы.

Шаги для решения проблемы

  1. Убедитесь, что cx_Oracle установлен.

    Ваша команда pip install sqlalchemy подтвердит, что SQLAlchemy установлен, но вам также необходимо установить cx_Oracle. Попробуйте выполнить следующую команду в PowerShell:

    pip install cx_Oracle

    Если установка прошла успешно, вы не должны видеть сообщений об ошибках.

  2. Проверьте версию Python и используемую среду.

    Убедитесь, что вы используете корректную среду Python. Иногда бывает, что у вас установлено несколько версий Python, и вы могли установить cx_Oracle в одной версии, а запускаете скрипт в другой. Выполните в PowerShell следующие команды, чтобы узнать, какая версия Python используется:

    python --version

    Также проверьте, какие пакеты установлены в данной среде:

    pip list

    Убедитесь, что cx_Oracle отображается в списке установленных пакетов.

  3. Проверьте пути к библиотекам.

    Убедитесь, что пути к библиотекам Python настроены правильно. Возможно, проблема возникает из-за того, что Python не может найти библиотеку cx_Oracle. Вы можете попробовать установить переменную окружения PATH для Oracle Client (если вы его используете). В Windows это можно сделать так:

    • Найдите папку, где установлен Oracle Client (например, C:\oracle\instantclient_19_8).
    • Добавьте эту папку в переменную окружения PATH.
  4. Проверьте установленный Oracle Instant Client.

    Для работы cx_Oracle может требоваться Oracle Instant Client. Убедитесь, что он установлен и корректно настроен, если ваша база данных Oracle требует его. Скачать мгновенно можно с официального сайта Oracle.

    После установки, проверьте, что библиотека oci.dll доступна в том же каталоге, где установлен Instant Client.

  5. Перезапустите PowerShell или VSCode.

    После установки или изменения настроек среды иногда требуется перезапустить терминал или редактор, чтобы изменения вступили в силу.

Дополнительные рекомендации

  • Если проблема продолжает возникать, возможно, стоит попробовать создать виртуальную среду для вашего проекта с помощью venv или conda. Это позволит изолировать зависимости проекта и избежать конфликтов.

  • Если ваш коллега работает без проблем, возможно, стоит сравнить настройки их среды (версии Python, установленные пакеты, настройки среды) с вашими.

Следуя указанным шагам, вы должны быть в состоянии устранить проблему с отсутствующим модулем cx_Oracle. Если какие-либо шаги вызывают затруднения, пожалуйста, дайте знать, и я постараюсь помочь вам более подробно.

Оцените материал
Добавить комментарий

Капча загружается...