Установка библиотеки tensorflow, EnvironmentError WinError 5, google.protobuf.pyext import _message ImportError: DLL load failed

Добрый день!
Помогите, пожалуйста, установить библиотеку tensorflow. Я ввожу: pip install tensorflow, выдает ошибку (пишет, что отказано в доступе, см скрин)


Соответственно, когда пытаюсь ее импортировать, пишет, что нет такого модуля
P.s. остальные библиотеки устанавливаются нормально, проблемы возникли только с этой

Терминал из-под администратора запущен?
Может быть, попробовать использовать при установке опцию “–user”, как программа советует?

Да, из-под администратора. Я ввел такую строку: py -3.6 -m pip install --user tensorflow
Пишет, что успешно установлено, но когда пытаюсь импортировать все равно выдает ошибку


Скрин терминала:

Точно?)
Если открывать cmd через “от имени админа” из меню, то оно не в папке юзера будет по умолчанию.

Вообще ставить библиотеки лучше не глобально, а через virtualenv (или через обертки типа poetry, pipenv немного удобнее). Как тут показано например: Пример создания GUI приложения на Python. PySide2, Poetry, PyCharm или прямо из UI PyCharm.

ЗЫ текст из консоли лучше копировать, а не скриншотить. На то он и текст :slight_smile:

Gleb, посмотрите рекомендации по установке и использованию TensorFlow :



Install TensorFlow with pip

Также в pip list проверте установлен ли TensorFlow

Я запустил терминал от имени администратора (до этого было не от администратора, как я понял), но результат тот же: вроде как все установилось, но импортировать не получается.
Раньше ошибка при импортировании была такая:
from google.protobuf.pyext import _message
ImportError: DLL load failed: Не найдена указанная процедура.
(я уставил отдельно библиотеку google, но не помогло)
Потом стала такая:
from tensorflow.core.framework.graph_pb2 import *
ModuleNotFoundError: No module named ‘tensorflow.core.framework.graph_pb2’
То есть получается, что некоторые подмодули почему-то не установились
Сейчас попробую виртуальную среду создать, хотя не знаю связана ли проблема как-то с этим

pip list что показывает?

pip list вот (tensorflow там есть вроде):

C:\WINDOWS\system32>py -3.6 -m pip list
Package                Version
---------------------- -------------------
absl-py                0.9.0
astor                  0.8.1
astunparse             1.6.3
atomicwrites           1.3.0
attrs                  19.3.0
beautifulsoup4         4.9.1
cachetools             4.1.0
certifi                2020.4.5.1
chardet                3.0.4
colorama               0.4.3
cycler                 0.10.0
gast                   0.3.3
google                 2.0.3
google-auth            1.15.0
google-auth-oauthlib   0.4.1
google-pasta           0.2.0
grpcio                 1.29.0
h5py                   2.10.0
idna                   2.9
importlib-metadata     1.6.0
joblib                 0.14.1
Keras-Applications     1.0.8
Keras-Preprocessing    1.1.2
kiwisolver             1.2.0
Markdown               3.2.2
matplotlib             3.2.1
more-itertools         8.2.0
numpy                  1.18.4
oauthlib               3.1.0
opt-einsum             3.2.1
packaging              20.3
pandas                 0.25.3
Pillow                 7.1.1
pip                    20.1.1
pluggy                 0.13.1
protobuf               3.12.1
py                     1.8.1
pyasn1                 0.4.8
pyasn1-modules         0.2.8
pyparsing              2.4.7
PyQt5                  5.14.2
PyQt5-sip              12.7.2
pytest                 5.4.1
python-dateutil        2.8.1
pytz                   2019.3
requests               2.23.0
requests-oauthlib      1.3.0
rsa                    4.0
scikit-learn           0.22.2.post1
scipy                  1.4.1
setuptools             46.4.0
six                    1.15.0
sklearn                0.0
soupsieve              2.0.1
tb-nightly             2.3.0a20200522
tensorboard            2.2.1
tensorboard-plugin-wit 1.6.0.post3
tensorflow             2.2.0
tensorflow-estimator   2.2.0
termcolor              1.1.0
tf-estimator-nightly   2.3.0.dev2020052101
urllib3                1.25.9
wcwidth                0.1.9
Werkzeug               1.0.1
wheel                  0.34.2
wrapt                  1.12.1
xgboost                1.0.2
zipp                   3.1.0

Третья ссылка из пятого поста. Обратите внимание на виртуальное окружение virtual environment. Похоже в этом причина.
И дополнительно ссылки по теме:



Виртуальные окружения

Не понял, пятый пост - это что?
Я делал в точности как здесь https://www.tensorflow.org/install/pip
То есть, создал виртуальную среду и установил tf в нее, но при импорте все то же самое:
from google.protobuf.pyext import _message
ImportError: DLL load failed: Не найдена указанная процедура.

Сообщение #5

Так ошибка же не про него, а про то, что он пытается импортировать protobuf и это приводит к ошибке.
Гугл говорит, что обновление Питона может помочь. https://github.com/protocolbuffers/protobuf/issues/5046#issuecomment-491986228

У меня в 3.7 работает. Без запуска от админа.

mkdir tensorflow
cd tensorflow
virtualenv --system-site-packages -p python3 ./venv
.\venv\Scripts\activate
pip install tensorflow
Alex@DESKTOP-6F8AV6C C:\Users\Alex
$ python --version
Python 3.7.4

Alex@DESKTOP-6F8AV6C C:\Users\Alex
$ pip3 --version
pip 19.0.3 from c:\python37\lib\site-packages\pip (python 3.7)

Alex@DESKTOP-6F8AV6C C:\Users\Alex
$ virtualenv --version
virtualenv 20.0.21 from C:\Users\Alex\AppData\Roaming\Python\Python37\site-packages\virtualenv\__init__.py

Alex@DESKTOP-6F8AV6C C:\Users\Alex
$ pip3 list
Package            Version
------------------ -------
appdirs            1.4.4
distlib            0.3.0
filelock           3.0.12
importlib-metadata 1.6.0
pip                19.0.3
setuptools         40.8.0
six                1.15.0
virtualenv         20.0.21
zipp               3.1.0
You are using pip version 19.0.3, however version 20.2b1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

Alex@DESKTOP-6F8AV6C C:\Users\Alex
$ mkdir tensorflow

Alex@DESKTOP-6F8AV6C C:\Users\Alex
$ cd tensorflow

Alex@DESKTOP-6F8AV6C C:\Users\Alex\tensorflow
$ virtualenv --system-site-packages -p python3 ./venv
created virtual environment CPython3.7.4.final.0-64 in 3130ms
  creator CPython3Windows(dest=C:\Users\Alex\tensorflow\venv, clear=False, global=True)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=C:\Users\Alex\AppData\Local\pypa\virtualenv\seed-app-data\v1.0.1)
  activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

Alex@DESKTOP-6F8AV6C C:\Users\Alex\tensorflow
$ .\venv\Scripts\activate

(venv) Alex@DESKTOP-6F8AV6C C:\Users\Alex\tensorflow
$ pip install tensorflow
Collecting tensorflow
  Downloading tensorflow-2.2.0-cp37-cp37m-win_amd64.whl (459.2 MB)
     |████████████████████████████████| 459.2 MB 
..............
Successfully installed absl-py-0.9.0 astunparse-1.6.3 cachetools-4.1.0 certifi-2020.4.5.1 chardet-3.0.4
 gast-0.3.3 google-auth-1.15.0 google-auth-oauthlib-0.4.1 google-pasta-0.2.0 grpcio-1.29.0 h5py-2.10.0 
idna-2.9 keras-preprocessing-1.1.2 markdown-3.2.2 numpy-1.18.4 oauthlib-3.1.0 opt-einsum-3.2.1 
protobuf-3.12.1 pyasn1-0.4.8 pyasn1-modules-0.2.8 requests-2.23.0 requests-oauthlib-1.3.0 rsa-4.0 
scipy-1.4.1 tensorboard-2.2.1 tensorboard-plugin-wit-1.6.0.post3 tensorflow-2.2.0 
tensorflow-estimator-2.2.0 termcolor-1.1.0 urllib3-1.25.9 werkzeug-1.0.1 wrapt-1.12.1

(venv) Alex@DESKTOP-6F8AV6C C:\Users\Alex\tensorflow
$ pip list
Package                Version
---------------------- -----------
absl-py                0.9.0
appdirs                1.4.4
astunparse             1.6.3
cachetools             4.1.0
certifi                2020.4.5.1
chardet                3.0.4
distlib                0.3.0
filelock               3.0.12
gast                   0.3.3
google-auth            1.15.0
google-auth-oauthlib   0.4.1
google-pasta           0.2.0
grpcio                 1.29.0
h5py                   2.10.0
idna                   2.9
importlib-metadata     1.6.0
Keras-Preprocessing    1.1.2
Markdown               3.2.2
numpy                  1.18.4
oauthlib               3.1.0
opt-einsum             3.2.1
pip                    20.1.1
protobuf               3.12.1
pyasn1                 0.4.8
pyasn1-modules         0.2.8
requests               2.23.0
requests-oauthlib      1.3.0
rsa                    4.0
scipy                  1.4.1
setuptools             46.4.0
six                    1.15.0
tensorboard            2.2.1
tensorboard-plugin-wit 1.6.0.post3
tensorflow             2.2.0
tensorflow-estimator   2.2.0
termcolor              1.1.0
urllib3                1.25.9
virtualenv             20.0.21
Werkzeug               1.0.1
wheel                  0.34.2
wrapt                  1.12.1
zipp                   3.1.0

Пример с https://www.tensorflow.org/overview работает

(venv) Alex@DESKTOP-6F8AV6C C:\Users\Alex\tensorflow
$ python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
2020-05-24 12:35:17.980955: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
2020-05-24 12:35:18.019864: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
>>> mnist = tf.keras.datasets.mnist
>>>
>>> (x_train, y_train),(x_test, y_test) = mnist.load_data()
>>> x_train, x_test = x_train / 255.0, x_test / 255.0
>>>
>>> model = tf.keras.models.Sequential([
...   tf.keras.layers.Flatten(input_shape=(28, 28)),
...   tf.keras.layers.Dense(128, activation='relu'),
...   tf.keras.layers.Dropout(0.2),
...   tf.keras.layers.Dense(10, activation='softmax')
... ])
2020-05-24 12:35:20.303471: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'nvcuda.dll'; dlerror: nvcuda.dll not found
2020-05-24 12:35:20.335347: E tensorflow/stream_executor/cuda/cuda_driver.cc:313] failed call to cuInit: UNKNOWN ERROR (303)
2020-05-24 12:35:20.362820: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: DESKTOP-6F8AV6C
2020-05-24 12:35:20.390290: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: DESKTOP-6F8AV6C
2020-05-24 12:35:20.413426: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2020-05-24 12:35:20.463660: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x27e0892d9f0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-05-24 12:35:20.503857: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
>>>
>>> model.compile(optimizer='adam',
...               loss='sparse_categorical_crossentropy',
...               metrics=['accuracy'])
>>>
>>> model.fit(x_train, y_train, epochs=5)
Epoch 1/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.2987 - accuracy: 0.9127
Epoch 2/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.1485 - accuracy: 0.9551
Epoch 3/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.1093 - accuracy: 0.9669
Epoch 4/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.0912 - accuracy: 0.9722
Epoch 5/5
1875/1875 [==============================] - 2s 1ms/step - loss: 0.0779 - accuracy: 0.9759
<tensorflow.python.keras.callbacks.History object at 0x0000027E05D39F48>
>>> model.evaluate(x_test, y_test)
313/313 [==============================] - 0s 911us/step - loss: 0.0859 - accuracy: 0.9734
[0.0858759731054306, 0.9733999967575073]

ЗЫ заметил, что в этой вин 10 python3 зачем-то открывает какую-то заглушку Майкрософта открывающую их магазин (если запустить без параметров, если с параметрами, то оно тупо ничего не выводит :joy: :man_facepalming:)

Но при этом команда выше про создание venv работает :thinking:

1 лайк

Так а разве : $, $ python --version, $ pip3 --version - это не линуксоидные команды?
У меня на Win выходит как-то так:

$ это не часть команды нигде, просто некоторые терминалы так выводят. ConEmu + Clink в данном случае (более удобная замена cmd).

https://askubuntu.com/a/706190/467324

In short, if the screen shows a dollar sign ($) or hash (#) on the left of the blinking cursor, you are in the command line environment.

$, #, % symbols indicate the user account type you are logged in to.

  • Dollar sign ($) means you are a normal user.
  • hash (#) means you are the system administrator (root).
  • In the C shell, the prompt ends with percentage sign (%).

There are differences on prompts in different Unix or GNU/Linux distributions because of their default settings. For example, the prompt of Debian/Ubuntu is guest@linux:~$, the one of Fedora/CentOS/RedHat is [guest@linux ~]$ and the one of SuSE Linux/OpenSUSE is guest@linux:~>. In general, the prompt usually show the login user name, machine hostname and current working directory and ended with a dollar ($), percentage (%) or hash (#) sign.

guest@linux:~$ 
  • guest - username: the user account you are logged in to.
  • linux - machine hostname: the machine you are operating.
  • ~ - current working directory: the directory you are in. Tilde (~) means home directory, i.e. the default directory when first logging in.

Все, у меня получилось. Скачал питон 3.7, и на нем все нормально установилось.
Большое спасибо всем, кто мне помогал

Значит Alex P. правильно нагуглил :slight_smile:
Вот здесь:

Только вот здесь:

почему-то пишут:

:thinking:

Может быть имеются в виду последние патч версии.
Для Питона 3.6 это сейчас 3.6.10.
По той ссылке же написано

Updating from python 3.6.0 to python 3.6.1 fixed this issue for me.


Вообще сидеть на старых версиях обычно смысла нет, особенно на этапе обучения/экспериментов. Лучше брать последнюю стабильную ветку (сейчас 3.8.х), чтобы иметь больше удобств.