# My py2exe app can’t find MIBs

17. I packed my pysnmp-based application with py2exe. When I run my app, it throws a traceback like this:

        File "pysnmp\entity\rfc3413\oneliner\cmdgen.pyc", line 116, in __init__
        File "pysnmp\entity\engine.pyc", line 16, in __init__
        File "pysnmp\proto\rfc3412.pyc", line 16, in __init__
        File "pysnmp\smi\builder.pyc", line 143, in __init__
        File "pysnmp\smi\builder.pyc", line 35, in init
        File "pysnmp\smi\builder.pyc", line 80, in _init
        ImportError: No module named mibs.instances

    PySNMP claims itself to be py2exe-friendly. How to make it working?

1. You have to list pysnmp MIB directories explicitly at your app’s setup.py so that py2exe would include them into the binary.

    from distutils.core import setup
    import sys

    options = {}

    if "py2exe" in sys.argv:
      import py2exe
      # fix executables
      options['console'] = ['myapp.py']
      # add files not found my modulefinder
      options['options'] = {
        'py2exe': {
          'includes': [
            'pysnmp.smi.mibs.*',
            'pysnmp.smi.mibs.instances.*'
          ]
        }
      }

    setup(**options)

Advertisement