# Global name 'system' is not defined

**URL:** <https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612>\
**Category:** Ignition\
**Tags:** scripting\
**Created:** [October 9, 2017, 4:33pm UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612 "2017-10-09T16:33:08Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![ShazamThat](https://avatars.discourse-cdn.com/v4/letter/s/e0b2c6/32.png) [@ShazamThat](https://forum.inductiveautomation.com/u/ShazamThat)\
**Post date:** [October 9, 2017, 4:33pm UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/1 "2017-10-09T16:33:08Z")

</div>

In my gateway event script, I have the following code:

> def endTimer(addTime):

> today = system.date.now()  
> unformatTime = system.date.addMinutes(today, addTime)  
> formatTime = system.date.format(unformatTime, "HH:mm")
> 
> return formatTime

But I keep getting the following error: global name 'system' is not defined

What am I doing wrong?

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [October 9, 2017, 4:47pm UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/2 "2017-10-09T16:47:40Z")

</div>

Try adding **import system** to the first line of the code.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 9, 2017, 4:47pm UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/3 "2017-10-09T16:47:58Z")

</div>

> [@ShazamThat](#):
>
> What am I doing wrong?

Nothing - this is a holdover from legacy scripting. You can call `import system` inside your defined function and run the system functions correctly. This (should) only apply to defined functions inside gateway event scripts.

---

<div class="post-metadata">

**Author:** ![nmudge](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nmudge/32/3394_2.png) [@nmudge](https://forum.inductiveautomation.com/u/nmudge)\
**Post date:** [October 9, 2017, 4:48pm UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/4 "2017-10-09T16:48:13Z")

</div>

Gateways scripts still use the [old legacy Python variable scoping](http://www.perfectabstractions.com/blog/new-scripting-features-in-ignition-77-part-1#standard-scoping). It might be that. Try adding “import system” to your function.

---

<div class="post-metadata">

**Author:** ![ShazamThat](https://avatars.discourse-cdn.com/v4/letter/s/e0b2c6/32.png) [@ShazamThat](https://forum.inductiveautomation.com/u/ShazamThat)\
**Post date:** [October 11, 2017, 6:12pm UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/5 "2017-10-11T18:12:39Z")

</div>

That worked. Thanks guys!

---

<div class="post-metadata">

**Author:** ![martinel3746](https://avatars.discourse-cdn.com/v4/letter/m/e0b2c6/32.png) [@martinel3746](https://forum.inductiveautomation.com/u/martinel3746)\
**Post date:** [July 12, 2019, 5:17pm UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/6 "2019-07-12T17:17:39Z")

</div>

This problem just cropped up for me on Ignition 8.0.2.  
It’s easily solved by doing: _import system_  
But I’ve never had to do it before today using several prior versions of Ignition  
Gateway event scripts are working without it, as recently as 30 minutes ago but now it is suddenly needed? Very strange…

---

<div class="post-metadata">

**Author:** ![flavien](https://avatars.discourse-cdn.com/v4/letter/f/f475e1/32.png) [@flavien](https://forum.inductiveautomation.com/u/flavien)\
**Post date:** [October 8, 2019, 2:59pm UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/7 "2019-10-08T14:59:40Z")

</div>

I have the same error with the gateway event script - Tag Change below :

```auto
import StringIO
import csv
import os
import ftplib
import sys
import system
from datetime import date
from datetime import datetime
from datetime import timedelta

if newValue.value==0:
	sys.exit()

today=date.today() #Récupère la date du jour au format 'aaaa-mm-jj'
datejour= str(today).replace('-','') #Remplace les - par rien
yesterday=date.today() - timedelta(days=1) #Récupère la date de la veille
yesterday_jour=str(yesterday).replace('-','') #Remplace les - par rien
#print datejour,yesterday_jour

ftp = ftplib.FTP('myip') 
ftp.login('user','password')
files = [] #créé liste vide
ftp.retrlines('NLST', files.append) #Récupère la liste des fichiers dans le dossier du FTP et alimente la liste

#print files

def callback(buf):
	ftmp=system.file.getTempFile("data")
	#print ftmp
	
	f=open(ftmp, 'wb')
	f.write(buf)
	system.file.writeFile("C:\\TempTest\\NewTest.data",buf)
	#print buf
	
	dataIn=	StringIO.StringIO(buf)
	reader=csv.reader(dataIn, delimiter=';', quotechar="\"")
	dataOut=[]
	headers=["Poste","Nom","Date","DJU"]
	for row in reader:
		dataOut.append(row)
	#print dataOut
	
	date=datetime.strptime(dataOut[-1][2]+'000000','%Y%m%d%H%M%S')
	dju=dataOut[-1][3].replace(',','.')
	#print dataOut[-1][2], dju,date
	
	
	f.close()
	
	query="INSERT INTO dju (t_stamp,dju) VALUES (?,?)"
	system.db.runPrepUpdate(query,[date,dju])

filename="DJU_"+yesterday_jour+".data"
#print filename
ftp.retrbinary('RETR '+filename, callback)
ftp.voidcmd('QUIT')
ftp.close()

```

Thanks

---

<div class="post-metadata">

**Author:** ![nideyijuyidong](https://avatars.discourse-cdn.com/v4/letter/n/7cd45c/32.png) [@nideyijuyidong](https://forum.inductiveautomation.com/u/nideyijuyidong)\
**Post date:** [December 17, 2021, 11:03am UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/8 "2021-12-17T11:03:37Z")

</div>

I tried, but it not work. It still shows _‘system’ is not defined._

 ![import system](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/b/2b2952ed53a4d3107bfcf6cc56879202a1bdbd7e.png)  
 ![system is not defined](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/4/d4d28f059dee1fbeff39864e48a4e9432c6304e5.png)  
ignition 8.1.10

---

<div class="post-metadata">

**Author:** ![Matrix\_Engineering](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/matrix_engineering/32/19781_2.png) [@Matrix\_Engineering](https://forum.inductiveautomation.com/u/Matrix_Engineering)\
**Post date:** [December 17, 2021, 11:06am UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/9 "2021-12-17T11:06:07Z")

</div>

Try putting import system IN your function, i.e.

```auto
def foo():
   import system
   system.Do.stuff

```

---

<div class="post-metadata">

**Author:** ![nideyijuyidong](https://avatars.discourse-cdn.com/v4/letter/n/7cd45c/32.png) [@nideyijuyidong](https://forum.inductiveautomation.com/u/nideyijuyidong)\
**Post date:** [December 17, 2021, 11:14am UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/10 "2021-12-17T11:14:53Z")

</div>

That’s right.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [December 17, 2021, 1:35pm UTC](https://forum.inductiveautomation.com/t/global-name-system-is-not-defined/15612/11 "2021-12-17T13:35:14Z")

</div>

Better, move all of that script to a project script module function. The legacy scoping issue where `def` doesn’t pick up the normal pre-defined imports only happens in the script in the event editor. It doesn’t happen in project script modules.
