Python Forum
cx_freeze setup.py error: No module __SNMP-FRAMEWORK-MIB
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
cx_freeze setup.py error: No module __SNMP-FRAMEWORK-MIB
#1
Hello all.
Firstly I run the following:
Windows 10 Enterprise 64-bit
Python 3.6.4
pysnmp 4.4.4
pyasn1 0.2.3
paramiko for ssh
tkinter as a GUI
All on Visual Studio Code v1.20.1

I actually raised this in a Stack Overflow forum (MibNotFoundError) and was advised (I think) to come here as I couldn't locate any online forums specifically dedicated to cx_freeze.
I made an app that adds/removes vlans and sends an snmp trap each time this is done. It all works fine when running just as a python script. When I assemble the exe using cx_freeze everything works EXCEPT that it doesn't send the trap and presents with the following error:

Traceback (most recent call last):
File "C:\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "snmpTester.py", line 56, in LabAccess
File "snmpTester.py", line 34, in sendTrap
File "C:\Python\Python36-32\lib\site-packages\pysnmp\entity\engine.py", line 91, in __init__
'__SNMP-FRAMEWORK-MIB', 'snmpEngineMaxMessageSize')
File "C:\Python\Python36-32\lib\site-packages\pysnmp\smi\builder.py", line 409, in importSymbols
'No module %s loaded at %s' % (modName, self)
pysnmp.smi.error.MibNotFoundError: No module __SNMP-FRAMEWORK-MIB loaded at <pysnmp.smi.builder.MibBuilder object at 0x03FD51B0>

When I enter the "python snmpSetup.py build" command to create the exe file, among all the other stuff that shows in the cmd window, I do see the above module successfully copied over:

<snip>
copying C:\Python\Python36-32\Lib\site-packages\pysnmp\smi\mibs\instances\__SNMP-FRAMEWORK-MIB.py -> build\exe.win32-3.6\mibs\instances\__SNMP-FRAMEWORK-MIB.py
<snip>

I have confirmed that the "__SNMP-FRAMEWORK-MIB.py" file is located in the instances folder as per the code in my setup.py file:
options = {
    'build_exe': {
        #'packages':packages,
        'include_files':[
            os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
            os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),
            'C:\\Python\\Python36-32\\Lib\\site-packages\\idna',
            'C:\\Python\\Python36-32\\Lib\\site-packages\\pysnmp\\smi\\mibs',
            'C:\\Python\\Python36-32\\Lib\\site-packages\\pysnmp\\smi\\mibs\\instances'
         ],
    },
}
Can anyone see where I'm going wrong? If you need more info please let me know as I didn't want to make my first post here too long and there are already many details in the Stack Overflow post that I did.
Thanks for any help
Cheers
Reply
#2
I did a test but use Pyinstaller.
Same error so the problem is pysnmp and that it don't find where mibs is installed.
Give full path and add to hiddenimports fix in test i did.

I run all in virtual environment using pipenv.
Example:
pipenv install pyinstaller
pipenv install pypiwin32
pipenv install pysnmp
pipenv install snmpclitools
Activate pipenv shell
So now try to make exe of demo code in pysnmp.
C:\1\exe_env
λ pyinstaller --onefile pn.py
Give same error as you got.

The fix,every time Pyinstaller run it generate a .spec file.
Here is the fix in .spec file that worked for me.
C:\1\exe_env
λ pyinstaller --clean pn.spec
The path is where mibs is placed in virtual environment.
# -*- mode: python -*-

hiddenimports = ['pysnmp.smi.exval','pysnmp.cache']
a = Analysis(['pn.py'],
             pathex=['C:/1/exe_env'],
             hiddenimports=hiddenimports,
             hookspath=None,
             runtime_hooks=None,
)
x = Tree('C:/Users/Tom/.virtualenvs/exe_env-Y6bgVtdX/Lib/site-packages/pysnmp/smi/mibs',prefix='pysnmp/smi/mibs',excludes='.py')
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          x,
          name='app',
          debug=False,
          strip=None,
          upx=True,
          console=True )
Reply
#3
Thanks snippsat for the reply. Unfortunately it's pretty much over my head.
Apologies but I should have mentioned here I am very much a newbie to python.
Are you saying I should use pyinstaller instead of cx_freeze? or do I use the fix you recommend in cx_freeze? I don't see any "spec" files when cx_freeze has completed it's work.
I'm having trouble understanding what I need do. From your code above is "name" = 'the_name_of_my_app'?
and "Tree" is the path to the mibs?
Thanks again.
Reply
#4
(Feb-19-2018, 12:05 AM)nacho Wrote: Are you saying I should use pyinstaller instead of cx_freeze? or do I use the fix you recommend in cx_freeze?
Did a quick test with cx_freeze but there got other errors after same imports and added path.
So yes you should use Pyinstaller,look at Doc.
Reply
#5
Ok.
I've installed pyinstaller and run it on the python script. I then made the change to the spec file but I'm getting a new error now:

C:\Users\netcomm\Documents\TerryTestPython>pyinstaller snmpTester.spec
122 INFO: PyInstaller: 3.3.1
123 INFO: Python: 3.6.4
126 INFO: Platform: Windows-10-10.0.14393-SP0
130 INFO: UPX is not available.
130 INFO: Removing temporary files and cleaning cache in C:\Users\netcomm\AppData\Roaming\pyinstaller
Traceback (most recent call last):
File "C:\Python\Python36-32\Scripts\pyinstaller-script.py", line 11, in <module>
load_entry_point('PyInstaller==3.3.1', 'console_scripts', 'pyinstaller')()
File "c:\python\python36-32\lib\site-packages\PyInstaller\__main__.py", line 94, in run
run_build(pyi_config, spec_file, **vars(args))
File "c:\python\python36-32\lib\site-packages\PyInstaller\__main__.py", line 46, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "c:\python\python36-32\lib\site-packages\PyInstaller\building\build_main.py", line 791, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "c:\python\python36-32\lib\site-packages\PyInstaller\building\build_main.py", line 737, in build
exec(text, spec_namespace)
File "<string>", line 28
SyntaxError: positional argument follows keyword argument

C:\Users\netcomm\Documents\TerryTestPython>


Here is the current spec file (I have tried using both / and \\ for the path names and both give the same error above:
# -*- mode: python -*-

block_cipher = None

hiddenimports = ['pysnmp.smi.exval','pysnmp.cache']

a = Analysis(['snmpTester.py'],
             pathex=['C:/Users/netcomm/Documents/TerryTestPython'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
x = Tree('C:/Python/Python36-32/Lib/site-packages/pysnmp/smi/mibs',prefix='pysnmp/smi/mibs',excludes='.py')
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='snmpTester',
          debug=False,
          strip=False,
          upx=True,
		  x,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='snmpTester')
Not sure where I go from here.
Do you have any other ideas?
Thanks.
Reply
#6
Just copy my .spec file and add your own path as in your spec file.
pyinstaller --clean pn.spec
Reply
#7
Thanks. Ok so I'm getting closer. That now appears to work ok on the snmpTester.py script I took from my main app.
However I get a different error when I try pyinstaller on the main app so I think there is maybe another error now (perhaps not related to snmp?):

C:\Users\netcomm\Documents\TerryTestPython>pyinstaller --clean testerButton.spec
129 INFO: PyInstaller: 3.3.1
129 INFO: Python: 3.6.4
132 INFO: Platform: Windows-10-10.0.14393-SP0
138 INFO: UPX is not available.
139 INFO: Removing temporary files and cleaning cache in C:\Users\netcomm\AppData\Roaming\pyinstaller
Traceback (most recent call last):
File "C:\Python\Python36-32\Scripts\pyinstaller-script.py", line 11, in <module>
load_entry_point('PyInstaller==3.3.1', 'console_scripts', 'pyinstaller')()
File "c:\python\python36-32\lib\site-packages\PyInstaller\__main__.py", line 94, in run
run_build(pyi_config, spec_file, **vars(args))
File "c:\python\python36-32\lib\site-packages\PyInstaller\__main__.py", line 46, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "c:\python\python36-32\lib\site-packages\PyInstaller\building\build_main.py", line 791, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "c:\python\python36-32\lib\site-packages\PyInstaller\building\build_main.py", line 737, in build
exec(text, spec_namespace)
File "<string>", line 10
SyntaxError: keyword argument repeated

Something to do with "main.py" I'm guessing.
Any ideas?
Thanks

>>> SCRATCH THAT. I made an error and inadvertantly pasted the path into the spec file twice. I have fixed that and it's WORKING!

Thanks heaps for your help today. I really appreciate it.

Hi.
Do I need to do anything else to "close" this thread? or mark it as "Answered"?
Reply
#8
(Feb-19-2018, 03:25 AM)nacho Wrote: I have fixed that and it's WORKING!
Hi.
Do I need to do anything else to "close" this thread? or mark it as "Answered"?
Good,there is no closed Thread or marked as "Answered" just leave it as it is Wink
Reply
#9
(Feb-19-2018, 03:25 AM)nacho Wrote: Thanks. Ok so I'm getting closer. That now appears to work ok on the snmpTester.py script I took from my main app.
However I get a different error when I try pyinstaller on the main app so I think there is maybe another error now (perhaps not related to snmp?):

C:\Users\netcomm\Documents\TerryTestPython>pyinstaller --clean testerButton.spec
129 INFO: PyInstaller: 3.3.1
129 INFO: Python: 3.6.4
132 INFO: Platform: Windows-10-10.0.14393-SP0
138 INFO: UPX is not available.
139 INFO: Removing temporary files and cleaning cache in C:\Users\netcomm\AppData\Roaming\pyinstaller
Traceback (most recent call last):
File "C:\Python\Python36-32\Scripts\pyinstaller-script.py", line 11, in <module>
load_entry_point('PyInstaller==3.3.1', 'console_scripts', 'pyinstaller')()
File "c:\python\python36-32\lib\site-packages\PyInstaller\__main__.py", line 94, in run
run_build(pyi_config, spec_file, **vars(args))
File "c:\python\python36-32\lib\site-packages\PyInstaller\__main__.py", line 46, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "c:\python\python36-32\lib\site-packages\PyInstaller\building\build_main.py", line 791, in main
build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
File "c:\python\python36-32\lib\site-packages\PyInstaller\building\build_main.py", line 737, in build
exec(text, spec_namespace)
File "<string>", line 10
SyntaxError: keyword argument repeated

Something to do with "main.py" I'm guessing.
Any ideas?
Thanks

>>> SCRATCH THAT. I made an error and inadvertantly pasted the path into the spec file twice. I have fixed that and it's WORKING!

Thanks heaps for your help today. I really appreciate it.

Hi.
Do I need to do anything else to "close" this thread? or mark it as "Answered"?

I have this exact same problem with pyinstaller.
I followed all of these instructions very closely, build is successful, but when I run the build I'm getting the following error:
[13565] Error loading Python lib '/tmp/_MEI3f3yDW/libpython2.7.so.1.0': dlopen: /tmp/_MEI3f3yDW/libpython2.7.so.1.0: cannot open shared object file: No such file or directory

Did you get this at all? What could it be?
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Problem with cx_freeze app only on one pc floatingshed 0 1,768 Mar-19-2021, 05:19 PM
Last Post: floatingshed
Exclamation Help with cx_Freeze mederic39 3 2,833 Jan-31-2021, 12:05 PM
Last Post: snippsat
  python setup.py install error blackclover 2 7,795 Jan-07-2021, 04:36 AM
Last Post: blackclover
  'python setup.py bdist' gets error on 'compiler_flags' 1780yz 0 2,172 Sep-02-2020, 09:17 PM
Last Post: 1780yz
  vlc module error pythonprogrammer 1 2,819 Apr-23-2020, 04:16 AM
Last Post: Larz60+
  cx_freeze frozen executive introduces WinError 10049 KipCarter 3 3,088 Jan-14-2020, 02:34 PM
Last Post: KipCarter
  Python 3.6 Alternatives to Cx_Freeze KipCarter 5 4,953 Jan-14-2020, 11:51 AM
Last Post: KipCarter
  cx_freeze exe does not work? Skycoder 4 6,258 Jan-13-2020, 06:50 PM
Last Post: KipCarter
  How to get cx_Freeze to make folders mad_accountant 0 3,034 Nov-24-2019, 02:22 PM
Last Post: mad_accountant
  setup() from turtle module not working bobfat 7 5,988 Oct-28-2019, 11:05 AM
Last Post: newbieAuggie2019

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020