[PYTHON] Une erreur se produit lors de la tentative d'importation de scikit-learn après la connexion à Oracle avec SQL Alchemy

phénomène

Si vous importez sklearn après avoir connecté la base de données à partir de l'instance ʻEngine` de SQL Alchemy comme indiqué ci-dessous, une erreur d'importation se produira.

demo.Cas de py / ImportError


import sqlalchemy
import cx_Oracle

dsnStr = cx_Oracle.makedsn('localhost','1521','pdb-name')
connect_str = 'oracle://user:pass@' + dsnStr.replace('SID', 'SERVICE_NAME')
engine = sqlalchemy.create_engine(connect_str, max_identifier_length=128)

conn = engine.connect()

import sklearn # <-Ici, "Erreur d'importation:Le chargement de la DLL a échoué "s'est produit

<détails>

Trace complète de la pile </ summary>

Traceback (most recent call last):
  File "demo.py", line 12, in <module>
    import sklearn
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\sklearn\__init__.py", line 80, in <module>    
    from .base import clone
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\sklearn\base.py", line 21, in <module>
    from .utils import _IS_32BIT
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\sklearn\utils\__init__.py", line 23, in <module>
    from .class_weight import compute_class_weight, compute_sample_weight
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\sklearn\utils\class_weight.py", line 7, in <module>
    from .validation import _deprecate_positional_args
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\sklearn\utils\validation.py", line 25, in <module>
    from .fixes import _object_dtype_isnan, parse_version
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\sklearn\utils\fixes.py", line 18, in <module> 
    import scipy.stats
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\stats\__init__.py", line 388, in <module>
    from .stats import *
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\stats\stats.py", line 180, in <module>  
    from . import distributions
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\stats\distributions.py", line 8, in <module>
    from ._distn_infrastructure import (entropy, rv_discrete, rv_continuous,
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\stats\_distn_infrastructure.py", line 23, in <module>
    from scipy import optimize
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\optimize\__init__.py", line 387, in <module>
    from .optimize import *
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\optimize\optimize.py", line 36, in <module>
    from ._numdiff import approx_derivative
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\optimize\_numdiff.py", line 6, in <module>
    from scipy.sparse.linalg import LinearOperator
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\sparse\linalg\__init__.py", line 114, in <module>
    from .eigen import *
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\sparse\linalg\eigen\__init__.py", line 9, in <module>
    from .arpack import *
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\sparse\linalg\eigen\arpack\__init__.py", line 20, in <module>
    from .arpack import *
  File "C:\Users\kurukuruz\anaconda3\envs\sqla-demo\lib\site-packages\scipy\sparse\linalg\eigen\arpack\arpack.py", line 43, in <module>
    from . import _arpack
ImportError: DLL load failed while importing _arpack:La procédure spécifiée est introuvable.

Cas effectivement rencontrés

Je ne pense pas que vous écrirez ʻimport au milieu du traitement comme décrit ci-dessus dans le fichier .py`, mais vous pouvez rencontrer une erreur dans les cas suivants.

--Lors de l'importation supplémentaire après avoir travaillé avec Jupyter Notebook dans une certaine mesure --Lors de la désérialisation d'un objet avec joblib.load (...) etc: arrow_left: C'est ce que j'ai rencontré

Contre-mesures

En tant que traitement symptomatique, il peut être déclaré à l'avance dans le code.

Exemple d'importation à l'avance


import sqlalchemy
import cx_Oracle
import joblib
import sklearn # <-Non utilisé explicitement dans ce fichier, mais déclaré

dsnStr = cx_Oracle.makedsn('localhost','1521','pdb-name')
connect_str = 'oracle://user:pass@' + dsnStr.replace('SID', 'SERVICE_NAME')
engine = sqlalchemy.create_engine(connect_str, max_identifier_length=128)

conn = engine.connect()

joblib.load('path/to/file.dump') # <-Sklearn implicitement utilisé ici

Recommended Posts

Une erreur se produit lors de la tentative d'importation de scikit-learn après la connexion à Oracle avec SQL Alchemy
Que faire lorsqu'une erreur se produit avec import _ssl
[Beanstalk] Que faire lorsqu'une erreur se produit avec import uuid
Après l'installation de CentOS8 avec VirtualBox, une erreur se produit lors du redémarrage
J'obtiens une erreur en essayant d'installer maec 4.0.1.0 avec pip
J'obtiens un UnicodeDecodeError en essayant de me connecter à oracle avec python sqlalchemy
Que faire si une erreur se produit lors de l'importation de numpy avec VScode
Revenir en arrière lorsqu'une erreur se produit avec le tissu
Solution de contournement si vous obtenez une erreur lors de la tentative d'installation de PySide avec pip
Un mémorandum lorsqu'une erreur se produit avec pip install
Que faire si vous obtenez une erreur d'importation lors de l'importation de matplotlib avec Jupyter
Que faire si vous obtenez une erreur non définie lorsque vous essayez d'utiliser pip avec pyenv
Solution lorsqu'une erreur se produit lors du masquage de l'écran de la console avec PyInstaller
J'obtiens une erreur avec les pandas d'importation.
J'ai eu une erreur en essayant d'installer Xgboost et sa solution
Comment gérer l'erreur SSL lors de la connexion à S3 avec Python boto
Que faire si vous obtenez une erreur lors du chargement de mnist
[OSX] [pyenv] Que faire lorsqu'une erreur SSL se produit dans pip
[AWS] Comment gérer WordPress "Une erreur s'est produite lors du recadrage d'une image."
Que faire si vous obtenez une erreur en essayant d'envoyer un message dans tasks.loop () immédiatement après le démarrage
Que faire si une erreur se produit lorsque vous chargez un projet Python créé avec de la poésie dans VS Code
[python] Que faire si vous obtenez une erreur avec send_keys dans le chrome sans tête
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
J'ai eu une erreur lors de l'enregistrement avec OpenCV
Erreur lors de la tentative d'installation de psycopg2 en Python
Une erreur se produit lors de l'importation de japandas (problème non résolu)
Erreur d'importation scikit-learn
[Python] Erreur de type: l'objet 'WebElement' n'est pas itérable Que faire lorsqu'une erreur se produit
Que faire si vous obtenez une erreur OpenSSL lors de l'installation de Python 2 avec pyenv
Un moyen simple de créer un module d'importation avec jupyter
J'obtiens une erreur en essayant meinheld + WebSocket + mongodb
Résout un problème où cv2.imread () ne donne pas d'erreur lors de la tentative de lecture d'une image même si le chemin ne passe pas
J'ai eu une erreur lors de l'utilisation de Tensorboard avec Pytorch
[Linux] Après connexion à DB avec teraterm et saisie de la commande Sqlplus, jusqu'à la connexion à DB (oracle)
Erreur et solution en essayant d'exécuter un classificateur réalisé avec Labellio avec mon propre ubuntu
(Vagrant) Erreur de réponse à l'autorisation refusée (publickey, gssapi-keyex, gssapi-with-mic) qui se produit lors de la connexion à SSH
Que faire lorsqu'une erreur de suppression se produit lors de la mise à jour de conda
[python] Remarques lors de la tentative d'utilisation de numpy avec Cython
J'obtiens [Erreur 2055] en essayant de me connecter à MySQL avec Heroku
J'ai essayé de créer un article dans Wiki.js avec SQL Alchemy