2

Problem

I get the following error when trying to run an .exe built with cx_Freeze:

ImportError: No module named 'pythoncom'

How could I troubleshoot this?

cx_Freeze: Python error in main script

Additional information

Setup:

  • Windows 7 Enterprise 64-bit
  • WinPython-64bit-3.5.2.3Qt5 (Python 3.5.2 64-bit)
  • cx_Freeze 5.0

setup.py:

import os
import sys
from cx_Freeze import setup, Executable


os.environ['TCL_LIBRARY'] = r"C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\tcl\tcl8.6" 
os.environ['TK_LIBRARY'] = r"C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\tcl\tk8.6" 


base = 'Console'
if sys.platform == 'win32':
    base = 'Win32GUI'

options = {
    'build_exe': {
        'excludes': ['gtk', 'PyQt4', 'Tkinter'],
        'includes': ['pythoncom']
    }
}


executables = [
    Executable('GUI.py', base=base)
]


setup(name='GUI',
      version='0.1',
      description='GUI test',
      executables=executables,
      options=options
      )

Imports in GUI.py*

*part of them

from bs4 import BeautifulSoup
import requests
import win32com.client, pythoncom

from PyQt5 import QtCore, QtGui, QtWidgets

from matplotlib import use as MPLuse
MPLuse("Qt5Agg",force=True)

from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure

import seaborn as sns

Build output lines with 'pythoncom' or 'pywin':

m pythoncom                 C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\pythoncom35.dll
...
copying C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\pythoncom35.dll -> build\exe.win-amd64-3.5\pythoncom35.dll

..
P pywin                     C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\Pythonwin\pywin\__init__.py
P pywin.dialogs             C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\Pythonwin\pywin\dialogs\__init__.py
m pywin.dialogs.list        C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\Pythonwin\pywin\dialogs\list.py
m pywin.dialogs.status      C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\Pythonwin\pywin\dialogs\status.py
P pywin.mfc                 C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\Pythonwin\pywin\mfc\__init__.py
m pywin.mfc.dialog          C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\Pythonwin\pywin\mfc\dialog.py
m pywin.mfc.object          C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\Pythonwin\pywin\mfc\object.py
m pywin.mfc.thread          C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\Pythonwin\pywin\mfc\thread.py
m pywin.mfc.window          C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\Pythonwin\pywin\mfc\window.py
m pywintypes                C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\pywintypes35.dll

..

copying C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\pywintypes35.dll -> build\exe.win-amd64-3.5\pywintypes35.dll

Errors during build:

none

What else I have tried?

  1. Build without the 'includes': ['pythoncom']. The outcome is the same.
  2. Build with 'packages': ['pythoncom']. The outcome is the same.
  3. Build with 'includes': ['pywin32']. Will get ImportError: No module named 'pywin32' during build.
  4. Build with 'packages': ['pywin32']. Will get ImportError: No module named 'pywin32' during build.
Niko Föhr
  • 28,336
  • 10
  • 93
  • 96
  • 1
    This problem has been asked and answered here: http://stackoverflow.com/questions/40744692/import-error-when-using-cx-freeze-with-pythoncom/ – Anthony Tuininga Nov 30 '16 at 05:20

0 Answers0