Protobuf: [Python, 3.6.1] Python import _message error reappears in this version

Created on 15 Aug 2018  Â·  22Comments  Â·  Source: protocolbuffers/protobuf

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!

packaging & distribution python wait for user action

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 "

All 22 comments

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/TeBoring

My environment
Language: Python 3.6
Windows 10

thanks!

—
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?

image

(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.
image

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)

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!

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.

Was this page helpful?
0 / 5 - 0 ratings