Hi,
The same bug in #4383 reappears in the newest version protobuf 3.6.1
from google.protobuf.pyext import _message
importError: DLL load failed: The specified procedure could not be found.
(An erroneous description has been revised.)
The bug doesn't exist in version 3.6.0 (#4605) and 3.5.2, as I've just tested. Maybe you forgot to fix it in this latest version. @TeBoring
My environment
Language: Python 3.6
Windows 10
thanks!
What’s the specified module in error message?
On Tue, Aug 14, 2018 at 21:13 ChenSenrui notifications@github.com wrote:
Hi,
The same bug in #4383 https://github.com/google/protobuf/issues/4383
reappears in the newest version protobuf 3.6.1
https://pypi.org/project/protobuf/from google.protobuf.pyext import _message
importError: DLL load failed: The specified module could not be found.The bug doesn't exist in version 3.6.0 (#4605
https://github.com/google/protobuf/issues/4605) and 3.5.2, as I've just
tested. Maybe you forgot to fix it in this latest version. @TeBoring
https://github.com/TeBoringMy environment
Language: Python 3.6
Windows 10thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/google/protobuf/issues/5046, or mute the thread
https://github.com/notifications/unsubscribe-auth/AE9H5bacTCWhGWsWVWmMZCPtYecu0FDkks5uQ5_xgaJpZM4V9idT
.
Could you check site-packages\google\protobuf\pyext\_message.pyd
Sorry, the description above is not exactly what happens in my computer. (I didn't notice the difference and just copied and pasted from #4383.)
What actually happens here is that, I want to import tensorflow in python using (protobuf 3.6.1), but there is a DLL load failed:
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>import tensorflow
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\64135\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\__init__.py", line 22, in <module>
from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
File "C:\Users\64135\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\__init__.py", line 52, in <module>
from tensorflow.core.framework.graph_pb2 import *
File "C:\Users\64135\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\core\framework\graph_pb2.py", line 6, in <module>
from google.protobuf import descriptor as _descriptor
File "C:\Users\64135\AppData\Local\Programs\Python\Python36\lib\site-packages\google\protobuf\descriptor.py", line 47, in <module>
from google.protobuf.pyext import _message
ImportError: DLL load failed: The specified procedure could not be found.
Also, if I only type this line:
>>> from google.protobuf.pyext import _message
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: The specified procedure could not be found.
When I change to protobuf 3.6.0 or protobuf 3.5.2, such error doesn't happen.
Could you use DependencyWalker to check site-packages\google\protobuf\pyext\_message.pyd?
@emddudley Do you have same problem?

(I don't know how to use DependencyWalk so I might get something wrong.)
The following is for protobuf3.6.0, which works well in my computer.

Could you show me the full list of dependency? Currently, your image just shows part of them ...
It's better if you can show the diff between these two lists.
3.6.1(erroneous:)
_message361.txt
3.6.0:
_message360.txt
Hope this will work. But I don't see difference between these two...
(Currently I'll just use ver3.6.0 to do my work)
It seems DependecyWalker is not set up correctly to find files. Does this help: https://stackoverflow.com/questions/48352027/how-do-i-diagnose-importerror-dll-load-failed-when-loading-native-windows-pytho
Thanks for your help, but I still don't know how to set Dependency Walker correctly. Some .dll files are in my computer, but Dependency Walker can't find them. I add the directory to it, but nothing change. Finally, I copy these .dll to ./windows/system32, but this time Dependency Walker broke down ...
Anyway I'll just use ver3.6.0 now. Maybe we can wait to see if others have the same problem. Thanks again.
Running Windows 7, python 3.6.0 (Anaconda 4.3.0). I can confirm this same error message with protobuf 3.6.1 (protobuf 3.6.1 installed as part of an upgrade to tensorflow-gpu 1.10.0, and the error prevented tensorflow from successfully importing).
I can also confirm that reverting to protobuf 3.6.0 allowed me to successfully import tensorflow (for those encountering the error this way and looking for a temporary solution).
Could you use DependencyWalker to check site-packagesgoogleprotobufpyext_message.pyd?
With protobuf-3.6.1-py2.py3-none-any.whl and Python 2.7.10 (64-bit) on Windows 7 the Lib\site-packages\google\protobuf\pyext\_message.pyd file does not exist.
With protobuf-3.6.1-cp36-cp36m-win_amd64.whl and Python 3.6.1 (64-bit) on Windows 7 this file does exist:
Lib\site-packages\google\protobuf\pyext\_message.cp36-win_amd64.pyd
When I run from google.protobuf.pyext import _message in the above Python 3 environment it succeeds without errors.
@emddudley Thanks for your help!
A similar issue: https://github.com/ContinuumIO/anaconda-issues/issues/1508
https://stackoverflow.com/questions/43264773/pil-dll-load-failed-specified-procedure-could-not-be-found/43723021#43723021
Maybe upgrade to python 3.6.1 can solve the problem.
Closed this for now. Feel free to reopen if you still have problem.
On my PC, updating python 3.6.0 to 3.6.1 solved the problem of " from google.protobuf.pyext import _message "
use Python 3.6.1 & protobuf-3.6.1-cp36-cp36m-win_amd64.whl in Win10 x64 , I solved the problem
Updating from python 3.6.0 to python 3.6.1 fixed this issue for me.
Most helpful comment
On my PC, updating python 3.6.0 to 3.6.1 solved the problem of " from google.protobuf.pyext import _message "