Вопрос или проблема
Может кто-нибудь помочь мне понять, что здесь происходит? Я пытался запустить это из 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. Давайте поэтапно разберем возможные решения этой проблемы.
Шаги для решения проблемы
-
Убедитесь, что cx_Oracle установлен.
Ваша команда
pip install sqlalchemy
подтвердит, что SQLAlchemy установлен, но вам также необходимо установитьcx_Oracle
. Попробуйте выполнить следующую команду в PowerShell:pip install cx_Oracle
Если установка прошла успешно, вы не должны видеть сообщений об ошибках.
-
Проверьте версию Python и используемую среду.
Убедитесь, что вы используете корректную среду Python. Иногда бывает, что у вас установлено несколько версий Python, и вы могли установить
cx_Oracle
в одной версии, а запускаете скрипт в другой. Выполните в PowerShell следующие команды, чтобы узнать, какая версия Python используется:python --version
Также проверьте, какие пакеты установлены в данной среде:
pip list
Убедитесь, что
cx_Oracle
отображается в списке установленных пакетов. -
Проверьте пути к библиотекам.
Убедитесь, что пути к библиотекам Python настроены правильно. Возможно, проблема возникает из-за того, что Python не может найти библиотеку
cx_Oracle
. Вы можете попробовать установить переменную окруженияPATH
для Oracle Client (если вы его используете). В Windows это можно сделать так:- Найдите папку, где установлен Oracle Client (например,
C:\oracle\instantclient_19_8
). - Добавьте эту папку в переменную окружения
PATH
.
- Найдите папку, где установлен Oracle Client (например,
-
Проверьте установленный Oracle Instant Client.
Для работы
cx_Oracle
может требоваться Oracle Instant Client. Убедитесь, что он установлен и корректно настроен, если ваша база данных Oracle требует его. Скачать мгновенно можно с официального сайта Oracle.После установки, проверьте, что библиотека
oci.dll
доступна в том же каталоге, где установлен Instant Client. -
Перезапустите PowerShell или VSCode.
После установки или изменения настроек среды иногда требуется перезапустить терминал или редактор, чтобы изменения вступили в силу.
Дополнительные рекомендации
-
Если проблема продолжает возникать, возможно, стоит попробовать создать виртуальную среду для вашего проекта с помощью
venv
илиconda
. Это позволит изолировать зависимости проекта и избежать конфликтов. - Если ваш коллега работает без проблем, возможно, стоит сравнить настройки их среды (версии Python, установленные пакеты, настройки среды) с вашими.
Следуя указанным шагам, вы должны быть в состоянии устранить проблему с отсутствующим модулем cx_Oracle
. Если какие-либо шаги вызывают затруднения, пожалуйста, дайте знать, и я постараюсь помочь вам более подробно.