Search code examples
pythontensorflowcx-freeze

cx_Freeze "no module named google" Error


I am using TensorFlow in a Python script that I am trying to freeze. Everything builds fine, but when I try to run it, I get this error:

Traceback (most recent call last):
  File "C:\Users\mthun\AppData\Local\Programs\Python\Python35\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
    module.run()
  File "C:\Users\mthun\AppData\Local\Programs\Python\Python35\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
    exec(code, m.__dict__)
  File "app.py", line 2, in <module>
  File "D:\code\Github\codes-at-home\retrain.py", line 16, in <module>
    import tensorflow as tf
  File "C:\Users\mthun\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\__init__.py", line 24, in <module>
    from tensorflow.python import *
  File "C:\Users\mthun\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\__init__.py", line 52, in <module>
    from tensorflow.core.framework.graph_pb2 import *
  File "C:\Users\mthun\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\core\framework\graph_pb2.py", line 6, in <module>
    from google.protobuf import descriptor as _descriptor
ImportError: No module named 'google'

I have two other local Python files that I import in my main script as modules. They both import TensorFlow. The app works completely fine when not frozen.

Here is my setup.py:

import sys
import os
from cx_Freeze import setup, Executable

PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')

# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {
    "packages": ["os"],
    'include_files': [
        'MISTER-BRAINWASH.ico',
        os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
        os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll')
    ],
    "includes":['retrain','label_image','numpy.core._methods', 'numpy.lib.format']
}

# GUI applications require a different base on Windows (the default is for a console application).
base = None

executables = [
    Executable("app.py", base=base, icon='MISTER-BRAINWASH.ico'),
]

setup(
    name="Taxon",
    version="0.1",
    description="retrain inception with a GUI",
    options={"build_exe": build_exe_options},
    executables=executables
)

I looked and google is indeed in my TensorFlow includes in the build directory. I'm running on Windows using Python 3.5.2 64 bit and TensorFlow 1.5.0


Solution

  • No module named 'google'

    To import google or anything from google there must be a __init__.py file in the google directory. Create that file in google directory and you can import from it. I had same exact problem.