sed’
¿Hay una manera fácil de ejecutar un archivo de Python dentro de Visual Studio Code con argumentos?
Sé que puedo agregar una configuración personalizada en el launch.json
archivo con el args
palabra clave. Sin embargo, es molesto modificar el lanzamiento.json archivo cada vez solo porque quiero usar diferentes argumentos.
jeremy thompson
Visual Studio Code solo admite uno lanzamiento.json expediente. Sin embargo, admite dos o más configuraciones, y aparecen en la lista desplegable del menú/panel de la izquierda (en lugar de “Sin configuraciones”).
En el panel DEPURAR, haga clic en el Configuración botón con un círculo rojo arriba o haga clic en el enlace azul “crear archivo launch.json”:
Haga clic en él y se crea un lanzamiento.json archivo con configuraciones de depuración. Edite este archivo y agregue el argumentos en este formato de par de claves Y agregue múltiples para diferentes argumentos incluido Sustitución de variables!
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File with my args",
"type": "python",
"request": "launch",
"program": "${file}",
"args": [
"--username", "Jeremy",
"--account", "Stackoverflow"
],
"console": "integratedTerminal"
},
{
"name": "Python: Current File with UserName arg",
"type": "python",
"request": "launch",
"program": "${file}",
"args": ["${env:USERNAME}"],
"console": "integratedTerminal"
}
]
}
Ponga un punto de interrupción en su secuencia de comandos de Python, por ejemplo, en la primera línea debajo def main(...)
y luego presione F5 o haga clic Menú Ejecutar > Iniciar depuración.
-
Esa es una respuesta útil, pero la pregunta era sobre correrno depuración. ¿Es posible ejecutar el script con argumentos sin los retrasos resultantes del depurador?
– León
19 de agosto de 2020 a las 3:29
-
Aunque es un IDE, también puedes
vscode.exe -path c:\file.py -args a=b
para ejecutarlo?–Jeremy Thompson
19 de agosto de 2020 a las 5:29
-
@Thyrst’ Actualicé la respuesta, ¿podría echarle otro vistazo? Gracias.
–Jeremy Thompson
13 oct 2020 a las 7:31
-
¿Puedo usar la configuración de inicio de alguna manera para ejecuciones normales, no para depuración? ¿O cómo pasaría argumentos sin depurar?
– CGFoX
23 de agosto a las 14:40
-
@CGFoX tal vez intente simularlo? stackoverflow.com/a/65210837/495455
–Jeremy Thompson
25 de agosto a las 6:10
Jotaf
Una solución es hacer que su secuencia de comandos solicite los argumentos de la línea de comandos (en la consola interna de Visual Studio Code).
Esto se puede hacer mucho más útil apoyándose en línea de lectura, que le permite hacer cosas como presionar la tecla de flecha hacia arriba para recorrer los comandos anteriores (historial de comandos) y más. Un ejemplo:
import argparse, readline
def main():
# Ask for additional command line arguments if needed (for VSCode)
parser = argparse.ArgumentParser()
parser.add_argument('--interactive', action='store_true', default=False)
(args, rest) = parser.parse_known_args()
if args.interactive:
try: readline.read_history_file()
except: pass
rest += input("Arguments: ").split(" ") # Get input args
try: readline.write_history_file()
except: pass
# Your other script arguments go here
parser.add_argument("-output-dir", default="/out")
# ...
args = parser.parse_args(rest)
print(args)
if __name__ == "__main__":
main()
Luego simplemente configure Visual Studio Code para pasar siempre en el --interactive
argumento, y su secuencia de comandos siempre solicitará argumentos (¡con historial!) Incluso cuando establezca puntos de interrupción.
-
¿Podría incluir cómo “configurar Visual Studio Code para pasar siempre el argumento –interactive” por favor?
– tigre arlequín
30 ago a las 15:55
Keshan Nageswaran
Puede agregar una tarea personalizada para hacer esto. Esto trata de la tasks.json
. Puede agregar un valor predeterminado tareas.json archivo para su proyecto (carpeta de proyecto). Sigue estos pasos. Prensa de teclado Control + Cambio + B. Aparecerá la siguiente ventana emergente
Haga clic en el Configurar tarea de compilación Si ya hay una costumbre tareas.json archivo creado en la siguiente ubicación .vscode/tasks.json
el editor lo abrirá. De lo contrario, dará un menú desplegable de sugerencias de ejecutores de tareas ya existentes.
Nuestro intención es crear una costumbre tareas.json para nuestro proyecto, por lo que para crear uno necesitamos seleccionar el Otros opción del menú desplegable. Verifique la captura de pantalla a continuación.
Una vez que seleccione el Otros opción, podría ver un valor predeterminado tareas.json el archivo se creará desde el directorio raíz del proyecto hasta la ubicación .vscode/tasks.json
. A continuación se muestra un ejemplo de tareas.json.
Ahora edite el tareas.json archivo para admitir Python.
- Cambie la propiedad Comando de
"echo"
a"Python"
- Mantener showOutput como
"Always"
- Cambiar args (argumentos) de
["Hello World"]
a["${file}"]
(Nombre del archivo) - Eliminar la última propiedad
problemMatcher
- Mantenga isShellCommand y las propiedades de la versión sin cambios
- Guardar los cambios realizados
Ahora puede abrir su archivo .py y ejecutarlo bien con el acceso directo Control + Cambio + B.
-
Gracias por la respuesta. Sin embargo, no lo entiendo … Ctrl + Shift + B ejecuta el script, pero ¿cómo puedo pasarle argumentos?
– Sed’
30 de abril de 2017 a las 20:03
-
Quiero iniciar el depurador, por ejemplo, desde la paleta de comandos con algo como
debug arg1 arg2
que iniciaría mi script comopython app.py arg1 arg2
.– Sed’
30 de abril de 2017 a las 20:06
Ehsan Ahmadi
Si no tienes un tarea.json archivo en su proyecto puede crear uno nuevo con prensa Control + Cambio + B. Luego, elija la primera opción que se le muestre y luego reemplácelas todas con las siguientes:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Run Python with argument",
"type": "shell",
"command": "python PROGRAM_NAME.py ARG1 ARG2 ...",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
De lo contrario, agregue la configuración anterior en su existencia tareas.json expediente.
Reemplace PROGRAM_NAME en la configuración anterior con el nombre de su programa y ARG1 ARG2 … indique sus argumentos específicos.
Después de todo, puede ejecutar su tarea creada con Control + Cambio + B y elija la nueva tarea “Ejecutar Python con argumento”.
Otra opción es que puede ejecutar su programa python desde la línea de comandos a través de
python3 -m debugpy --wait-for-client --listen localhost:5678 myprogram.py
Entonces puedes usar un Python: Remote Attach
Configuración de launch.json para conectarse al programa. Significa un paso adicional cada vez que enciende su programa: ejecute el programa en la CLI y luego adjunte el depurador, pero hace que especificar los argumentos sea más fluido.
Para simplificar aún más las cosas, puede poner lo anterior en un script bash y pasar los argumentos de CLI a python:
start.sh "my arg that changes all the time"
Luego adjunte a través de “Adjuntar remotamente”.
viñeta
He buscado una solución al problema descrito aquí, pero no creo que ninguna de las respuestas sea suficiente, así que he creado un ejecución de depuración utilidad para resolverlo.
Si tiene instalada la extensión VS Code Python, entonces el depurador completo de depuración ya está incluido. La utilidad encuentra la ruta donde está instalado debugpy y luego lo ejecuta para el programa y los argumentos que especifique, en modo de escucha. Conéctese a él desde VS Code usando la configuración de depuración de Python “Remote Attach” (usando la configuración predeterminada de host y puerto). Tu puedes sólo control+c
y luego vuelva a ejecutar el comando con los argumentos modificados utilizando su historial de shell y las funciones de edición de la línea de comando, para cada ejecución de depuración.
Jan-Willem Lankhaar
Además, a las respuestas de xdhmoore, para aquellos que no están muy familiarizados con la creación de configuraciones en launch.json
debe verse de la siguiente manera:
"configurations": [
...,
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"host": "127.0.0.1",
"port": 5678
}
]
Para comenzar la depuración, primero emita el comando de línea de comando en la terminal y luego inicie la configuración de inicio (recién creada) Python: Remote Attach
desde el menú de inicio de depuración en VS Code.