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


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

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

def init(obj):
global crt
crt = obj

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?

Reply With Quote