# Buggy code
def _create_launchers(self):
    """Create launchers"""

    self._print("Creating launchers")
    self.create_launcher(
        "WinPython Command Prompt.exe",
        "cmd.ico",
        command="$SYSDIR\cmd.exe",
        args=r"/k cmd.bat",
    )

    self.create_launcher(
        "WinPython Interpreter.exe",
        "python.ico",
        command="$SYSDIR\cmd.exe",
        args=r"/k python.bat",
    )

    # self.create_launcher('IDLEX (students).exe', 'python.ico',
    #                     command='$SYSDIR\cmd.exe',
    #                     args= r'/k IDLEX_for_student.bat  %*',
    #                     workdir='$EXEDIR\scripts')
    self.create_launcher(
        "IDLEX (Python GUI).exe",
        "python.ico",
        command="wscript.exe",
        args=r"Noshell.vbs IDLEX.bat",
    )

    self.create_launcher(
        "Spyder.exe",
        "spyder.ico",
        command="wscript.exe",
        args=r"Noshell.vbs spyder.bat",
    )

    self.create_launcher(
        "Spyder reset.exe",
        "spyder_reset.ico",
        command="wscript.exe",
        args=r"Noshell.vbs spyder_reset.bat",
    )

    self.create_launcher(
        "WinPython Control Panel.exe",
        "winpython.ico",
        command="wscript.exe",
        args=r"Noshell.vbs wpcp.bat",
    )

    # Multi-Qt launchers (Qt5 has priority if found)
    self.create_launcher(
        "Qt Demo.exe", "qt.ico", command="wscript.exe", args=r"Noshell.vbs qtdemo.bat"
    )

    self.create_launcher(
        "Qt Assistant.exe",
        "qtassistant.ico",
        command="wscript.exe",
        args=r"Noshell.vbs qtassistant.bat",
    )

    self.create_launcher(
        "Qt Designer.exe",
        "qtdesigner.ico",
        command="wscript.exe",
        args=r"Noshell.vbs qtdesigner.bat",
    )

    self.create_launcher(
        "Qt Linguist.exe",
        "qtlinguist.ico",
        command="wscript.exe",
        args=r"Noshell.vbs qtlinguist.bat",
    )

    # Jupyter launchers
    self.create_launcher(
        "IPython Qt Console.exe",
        "ipython.ico",
        command="wscript.exe",
        args=r"Noshell.vbs qtconsole.bat",
    )

    # this one needs a shell to kill fantom processes
    self.create_launcher(
        "Jupyter Notebook.exe",
        "jupyter.ico",
        command="$SYSDIR\cmd.exe",
        args=r"/k ipython_notebook.bat",
    )

    self._print_done()


# Traceback (OSError)
Traceback (most recent call last):
File "C:\Users\XXX\Documents\zipp\winpython\WinPython-32bit-3.4.4.2Qt5\python-3.4.4\lib\site-packages\llvmlite\binding\ffi.py", line 40, in <module>
lib = ctypes.CDLL(os.path.join(_lib_dir, _lib_name))
File "C:\Users\XXX\Documents\zipp\winpython\WinPython-32bit-3.4.4.2Qt5\python-3.4.4\lib\ctypes\__init__.py", line 351, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\XXX\Documents\zipp\winpython\WinPython-32bit-3.4.4.2Qt5\python-3.4.4\lib\site-packages\numba\__init__.py", line 9, in <module>
from . import runtests, decorators
File "C:\Users\XXX\Documents\zipp\winpython\WinPython-32bit-3.4.4.2Qt5\python-3.4.4\lib\site-packages\numba\decorators.py", line 8, in <module>
from . import config, sigutils
File "C:\Users\XXX\Documents\zipp\winpython\WinPython-32bit-3.4.4.2Qt5\python-3.4.4\lib\site-packages\numba\config.py", line 10, in <module>
import llvmlite.binding as ll
File "C:\Users\XXX\Documents\zipp\winpython\WinPython-32bit-3.4.4.2Qt5\python-3.4.4\lib\site-packages\llvmlite\binding\__init__.py", line 6, in <module>
from .dylib import *
File "C:\Users\XXX\Documents\zipp\winpython\WinPython-32bit-3.4.4.2Qt5\python-3.4.4\lib\site-packages\llvmlite\binding\dylib.py", line 4, in <module>
from . import ffi
File "C:\Users\XXX\Documents\zipp\winpython\WinPython-32bit-3.4.4.2Qt5\python-3.4.4\lib\site-packages\llvmlite\binding\ffi.py", line 45, in <module>
lib = ctypes.CDLL(_lib_name)
File "C:\Users\XXX\Documents\zipp\winpython\WinPython-32bit-3.4.4.2Qt5\python-3.4.4\lib\ctypes\__init__.py", line 351, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found

# Fixed code
def _create_launchers(self):
    """Create launchers"""

    self._print("Creating launchers")
    self.create_launcher(
        "WinPython Command Prompt.exe",
        "cmd.ico",
        command="$SYSDIR\cmd.exe",
        args=r"/k cmd.bat",
    )

    self.create_launcher(
        "WinPython Interpreter.exe",
        "python.ico",
        command="$SYSDIR\cmd.exe",
        args=r"/k winpython.bat",
    )

    # self.create_launcher('IDLEX (students).exe', 'python.ico',
    #                     command='$SYSDIR\cmd.exe',
    #                     args= r'/k IDLEX_for_student.bat  %*',
    #                     workdir='$EXEDIR\scripts')
    self.create_launcher(
        "IDLEX (Python GUI).exe",
        "python.ico",
        command="wscript.exe",
        args=r"Noshell.vbs IDLEX.bat",
    )

    self.create_launcher(
        "Spyder.exe",
        "spyder.ico",
        command="wscript.exe",
        args=r"Noshell.vbs spyder.bat",
    )

    self.create_launcher(
        "Spyder reset.exe",
        "spyder_reset.ico",
        command="wscript.exe",
        args=r"Noshell.vbs spyder_reset.bat",
    )

    self.create_launcher(
        "WinPython Control Panel.exe",
        "winpython.ico",
        command="wscript.exe",
        args=r"Noshell.vbs wpcp.bat",
    )

    # Multi-Qt launchers (Qt5 has priority if found)
    self.create_launcher(
        "Qt Demo.exe", "qt.ico", command="wscript.exe", args=r"Noshell.vbs qtdemo.bat"
    )

    self.create_launcher(
        "Qt Assistant.exe",
        "qtassistant.ico",
        command="wscript.exe",
        args=r"Noshell.vbs qtassistant.bat",
    )

    self.create_launcher(
        "Qt Designer.exe",
        "qtdesigner.ico",
        command="wscript.exe",
        args=r"Noshell.vbs qtdesigner.bat",
    )

    self.create_launcher(
        "Qt Linguist.exe",
        "qtlinguist.ico",
        command="wscript.exe",
        args=r"Noshell.vbs qtlinguist.bat",
    )

    # Jupyter launchers
    self.create_launcher(
        "IPython Qt Console.exe",
        "ipython.ico",
        command="wscript.exe",
        args=r"Noshell.vbs qtconsole.bat",
    )

    # this one needs a shell to kill fantom processes
    self.create_launcher(
        "Jupyter Notebook.exe",
        "jupyter.ico",
        command="$SYSDIR\cmd.exe",
        args=r"/k ipython_notebook.bat",
    )

    self._print_done()