NameError: name 'exit' is not defined

PythonCx Freeze

Python Problem Overview


I used cxfreeze to create a Windows executable from planrequest.py. It seemed to work ok, but when I run the exe file I get NameError: name 'exit' is not defined

https://stackoverflow.com/questions/30144893/name-exit-is-not-defined-in-python states that the fix is to use import sys. However, I use import sys. The code runs fine as a python script (as in, I extensively tested the command line arguments before compiling to an executable.)

import socket
import sys

if len(sys.argv) == 1:
    print("Usage:")
    print("PlanRequest [Request String] [Server IP (optional: assumes 127.0.0.1 if omitted)]")
    exit()

#[do stuff with the request]

Python Solutions


Solution 1 - Python

Importing sys will not be enough to make exit live in the global scope.

You either need to do

from sys import exit
exit()

or

import sys
sys.exit()

Note that, as you are also using argv, in the first case you should do from sys import argv,exit

Solution 2 - Python

You have to apply the function to sys:

from sys import exit
exit()

because exit is the function itself, you need to call it with ()

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTimView Question on Stackoverflow
Solution 1 - Pythonb1ch0uView Answer on Stackoverflow
Solution 2 - PythonDamian LatteneroView Answer on Stackoverflow