web-dev-qa-db-fra.com

NameError: le nom 'exit' n'est pas défini

J'ai utilisé cxfreeze pour créer un exécutable Windows à partir de planrequest.py. Cela semblait fonctionner correctement, mais lorsque j'exécute le fichier exe, j'obtiens NameError: name 'exit' is not defined

le nom de sortie n'est pas défini en python indique que le correctif consiste à utiliser import sys. Cependant, j'utilise import sys. Le code fonctionne très bien comme un script python (comme dans, j'ai largement testé les arguments de la ligne de commande avant de les compiler en un exécutable.)

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]
17
Tim

L'importation de sys ne sera pas suffisante pour faire vivre exit dans la portée globale.

Vous devez soit faire

from sys import exit
exit()

ou

import sys
sys.exit()

Notez que, comme vous utilisez également argv, dans le premier cas, vous devriez le fairefrom sys import argv,exit

24
b1ch0u

Vous devez appliquer la fonction à sys:

from sys import exit
exit()

parce que exit est la fonction elle-même, vous devez l'appeler avec ()

4