Ранее я мог успешно импортировать модули из fancyimpute в один Jupyterlab ноутбук, но не в другие. После перезагрузки компьютера происходит сбой во всех ноутбуках с «ImportError: сбой загрузки DLL: указанная процедура не найдена.»
Почему это работает на одной вкладке, а не на другой?
И, что еще более тревожно, с чего бы это перестало работать вместе?
В некоторых других сообщениях об аналогичных ошибках предполагалось, что это может быть связано с sys.path, который я исследовал. Единственная разница между ноутбуком, где он работал, и тем, где он не работал, заключалась в том, что в том, где он работал, отсутствовала запись для factor_analyzer-0.3.1-py3.6.egg, которую я добавил после открытия этого ноутбука.
Я исследовал sys.path , и для ноутбука, где он работал, он выглядел так (я ввел возврат каретки вручную, чтобы сделать его более разборчивым):
['C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\python36.zip',
'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\DLLs',
'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\lib',
'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab',
'',
'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\lib\\site-packages',
'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\laure\\.ipython']
И для тех, где это не так:
['C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\python36.zip',
'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\DLLs',
'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\lib',
'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab',
'',
'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\lib\\site-packages',
'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\lib\\site-packages\\factor_analyzer-0.3.1-py3.6.egg', 'C:\\Users\\laure\\Anaconda3\\envs\\scipy18jlab\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\laure\\.ipython']
Код, который выдает ошибки:
from fancyimpute import KNN, NuclearNormMinimization, SoftImpute, IterativeImputer, BiScaler, SimpleFill
и сообщение об ошибке:
Using TensorFlow backend.
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-5-64b839002688> in <module>
----> 1 from fancyimpute import KNN, NuclearNormMinimization, SoftImpute, IterativeImputer, BiScaler, SimpleFill
~\Anaconda3\envs\scipy18jlab\lib\site-packages\fancyimpute\__init__.py in <module>
4 from .nuclear_norm_minimization import NuclearNormMinimization
5 from .iterative_imputer import IterativeImputer
----> 6 from .matrix_factorization import MatrixFactorization
7 from .iterative_svd import IterativeSVD
8 from .simple_fill import SimpleFill
~\Anaconda3\envs\scipy18jlab\lib\site-packages\fancyimpute\matrix_factorization.py in <module>
14
15 import numpy as np
---> 16 from keras import regularizers
17 from keras.callbacks import EarlyStopping
18 from keras.layers import Input
~\Anaconda3\envs\scipy18jlab\lib\site-packages\keras\__init__.py in <module>
1 from __future__ import absolute_import
2
----> 3 from . import utils
4 from . import activations
5 from . import applications
~\Anaconda3\envs\scipy18jlab\lib\site-packages\keras\utils\__init__.py in <module>
4 from . import data_utils
5 from . import io_utils
----> 6 from . import conv_utils
7
8 # Globally-importable utils.
~\Anaconda3\envs\scipy18jlab\lib\site-packages\keras\utils\conv_utils.py in <module>
7 from six.moves import range
8 import numpy as np
----> 9 from .. import backend as K
10
11
~\Anaconda3\envs\scipy18jlab\lib\site-packages\keras\backend\__init__.py in <module>
87 elif _BACKEND == 'tensorflow':
88 sys.stderr.write('Using TensorFlow backend.\n')
---> 89 from .tensorflow_backend import *
90 else:
91 # Try and load external backend.
~\Anaconda3\envs\scipy18jlab\lib\site-packages\keras\backend\tensorflow_backend.py in <module>
3 from __future__ import print_function
4
----> 5 import tensorflow as tf
6 from tensorflow.python.framework import ops as tf_ops
7 from tensorflow.python.training import moving_averages
~\Anaconda3\envs\scipy18jlab\lib\site-packages\tensorflow\__init__.py in <module>
22
23 # pylint: disable=g-bad-import-order
---> 24 from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
25
26 from tensorflow._api.v1 import app
~\Anaconda3\envs\scipy18jlab\lib\site-packages\tensorflow\python\__init__.py in <module>
50
51 # Protocol buffers
---> 52 from tensorflow.core.framework.graph_pb2 import *
53 from tensorflow.core.framework.node_def_pb2 import *
54 from tensorflow.core.framework.summary_pb2 import *
~\Anaconda3\envs\scipy18jlab\lib\site-packages\tensorflow\core\framework\graph_pb2.py in <module>
4 import sys
5 _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
----> 6 from google.protobuf import descriptor as _descriptor
7 from google.protobuf import message as _message
8 from google.protobuf import reflection as _reflection
~\Anaconda3\envs\scipy18jlab\lib\site-packages\google\protobuf\descriptor.py in <module>
45 import binascii
46 import os
---> 47 from google.protobuf.pyext import _message
48 _USE_C_DESCRIPTORS = getattr(_message, '_USE_C_DESCRIPTORS', False)
49
ImportError: DLL load failed: The specified procedure could not be found.
Буду признателен за любые советы по расследованию и решению проблемы. Также дайте мне знать, если мне нужно предоставить более подробную информацию об окружающей среде.
!pip list
Дает:
Package Version
-------------------- -----------
absl-py 0.7.1
appdirs 1.4.3
arrow 0.13.1
asn1crypto 0.24.0
astor 0.7.1
attrs 18.2.0
backcall 0.1.0
beautifulsoup4 4.5.3
binaryornot 0.4.4
bleach 3.1.0
bqplot 0.11.5
CausalInference 0.1.2
certifi 2019.3.9
cffi 1.12.0
chardet 3.0.4
Click 7.0
colorama 0.4.1
cookiecutter 1.6.0
country-converter 0.6.6
cryptography 2.3.1
CVXcanon 0.1.1
cvxpy 1.0.21
cycler 0.10.0
decorator 4.3.2
defusedxml 0.6.0
dill 0.2.9
distro 1.4.0
ecos 2.0.7.post1
entrypoints 0.3
factor-analyzer 0.3.1
fancyimpute 0.4.3
fastcache 1.0.2
future 0.17.1
gast 0.2.2
grpcio 1.20.1
h5py 2.9.0
html-table-extractor 1.3.0
idna 2.8
impyute 0.0.7
ipydatawidgets 4.0.0
ipykernel 5.1.0
ipyscales 0.3.0
ipython 7.2.0
ipython-genutils 0.2.0
ipywidgets 7.4.2
jedi 0.13.2
Jinja2 2.10
jinja2-time 0.2.0
jsonschema 3.0.0a3
jupyter-client 5.2.4
jupyter-core 4.4.0
jupyterlab 0.35.4
jupyterlab-server 0.2.0
Keras 2.2.4
Keras-Applications 1.0.7
Keras-Preprocessing 1.0.9
kiwisolver 1.1.0
knnimpute 0.1.0
lxml 4.3.1
Markdown 3.1
MarkupSafe 1.1.0
matplotlib 3.0.3
missingno 0.4.1
mistune 0.8.4
mkl-fft 1.0.10
mkl-random 1.0.2
mock 2.0.0
multiprocess 0.70.7
nbconvert 5.5.0
nbformat 4.4.0
notebook 5.5.0
np-utils 0.5.10.0
numpy 1.16.3
osqp 0.5.0
packaging 19.0
pandas 0.23.4
pandas-datareader 0.7.0
pandocfilters 1.4.2
parso 0.3.4
patsy 0.5.1
pbr 5.2.0
pickleshare 0.7.5
pip 19.0.2
poyo 0.4.2
prompt-toolkit 2.0.8
protobuf 3.7.1
pyarrow 0.13.0
pycparser 2.19
Pygments 2.3.1
pyOpenSSL 19.0.0
pyparsing 2.4.0
PyPDF2 1.26.0
pyrsistent 0.14.10
PySocks 1.6.8
python-dateutil 2.8.0
pythreejs 2.0.2
pytz 2018.9
pywinpty 0.5.5
PyYAML 5.1
pyzmq 17.1.2
quilt 2.9.15
requests 2.21.0
scikit-learn 0.20.3
scipy 1.2.1
scs 2.1.0
seaborn 0.9.0
Send2Trash 1.5.0
setuptools 40.8.0
six 1.12.0
statsmodels 0.9.0
tabula-py 1.3.1
tensorboard 1.13.1
tensorflow 1.13.1
tensorflow-estimator 1.13.0
termcolor 1.1.0
terminado 0.8.1
testpath 0.4.2
tornado 5.1.1
tqdm 4.31.1
traitlets 4.3.2
traittypes 0.2.1
urllib3 1.24.1
wbdata 0.2.7
wcwidth 0.1.7
webencodings 0.5.1
Werkzeug 0.15.2
wheel 0.33.0
whichcraft 0.5.2
widgetsnbextension 3.4.2
win-inet-pton 1.0.1
wincertstore 0.2
wrapt 1.11.1
xlrd 1.2.0
XlsxWriter 1.1.4
xlwt 1.3.0
Попытался решить проблему путем понижения версии protobuf до 3.7.0 и протестировать путем прямого импорта виновника:
from google.protobuf.pyext import _message
Что дает
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-10-019e0ec86f84> in <module>
----> 1 from google.protobuf.pyext import _message
ImportError: DLL load failed: The specified procedure could not be found.