View Single Post
  #1  
Old 03-30-2020, 10:21 AM
pjano1 pjano1 is offline
Registered User
 
Join Date: Mar 2020
Posts: 6
How to import a class file into another file that uses SecureCRT

Hello,

I'm trying to import a class I created into different, separate scripts. Both the script and the class use python through SecureCRT. Whenever I copy and paste the entire class into the calling script and call it this way:


class A:
...

def main():
a = A()


It works fine. But if I try and import it like this:


import a_file

def main():
a = a_file.A()


or like this:


from a_file import A

def main():
a = A()


It says "global name 'crt' is not defined" and won't work. I would much rather be able to define my class in a different file so I don't have to keep copying and pasting the entire thing every time I need to use it.

I've run into a similar issue before, only with function scripts I've written (they only hold functions). I found a work around for this I on another forum here a while ago, but essentially just put the following syntax in the calling script before it gets going:


import function_a
reload(function_a)
function_a.init(crt)


And then add the following function definition in the function script you need to call:


def init(obj):
global crt
crt = obj
return


I've been playing around with this to see if I can get it to work on classes as well as function scripts, but so far I've come up empty. What baffles me is why what I just put works for SecureCRT python function scripts, but the moment you try this on a script with a class definition, it doesn't work. Has anyone run into this issue before and or were able to fix it/work around it?

Thanks
Reply With Quote