Estaba siguiendo las instrucciones del sitio web del código VS, pero parecía que nada de lo que intenté funcionó.
Creé una nueva configuración según sea necesario, pero cada vez que pongo la ruta se niega a funcionar en el código VS, aunque la ruta del código VS se queja en la ventana del terminal integrado funciona bien cuando lo llamo manualmente.
El error que arroja el depurador es el siguiente:
(automl-meta-learning) brandomiranda~/automl-meta-learning/automl/experiments ❯ env PTVSD_LAUNCHER_PORT=59729 /Users/brandomiranda/miniconda3/envs/automl-meta-learning/bin/python /Users/brandomiranda/.vscode/extensions/ms-python.python-2020.2.63072/pythonFiles/lib/python/new_ptvsd/wheels/ptvsd/launcher -m /Users/brandomiranda/automl-meta-learning/automl/experiments/experiments_model_optimization.py
E+00000.025: Error determining module path for sys.argv
Traceback (most recent call last):
File "/Users/brandomiranda/.vscode/extensions/ms-python.python-2020.2.63072/pythonFiles/lib/python/new_ptvsd/wheels/ptvsd/../ptvsd/server/cli.py", line 220, in run_module
spec = find_spec(options.target)
File "/Users/brandomiranda/miniconda3/envs/automl-meta-learning/lib/python3.7/importlib/util.py", line 94, in find_spec
parent = __import__(parent_name, fromlist=['__path__'])
ModuleNotFoundError: No module named '/Users/brandomiranda/automl-meta-learning/automl/experiments/experiments_model_optimization'
Stack where logged:
File "/Users/brandomiranda/miniconda3/envs/automl-meta-learning/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/Users/brandomiranda/miniconda3/envs/automl-meta-learning/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/Users/brandomiranda/.vscode/extensions/ms-python.python-2020.2.63072/pythonFiles/lib/python/new_ptvsd/wheels/ptvsd/__main__.py", line 45, in <module>
cli.main()
File "/Users/brandomiranda/.vscode/extensions/ms-python.python-2020.2.63072/pythonFiles/lib/python/new_ptvsd/wheels/ptvsd/../ptvsd/server/cli.py", line 361, in main
run()
File "/Users/brandomiranda/.vscode/extensions/ms-python.python-2020.2.63072/pythonFiles/lib/python/new_ptvsd/wheels/ptvsd/../ptvsd/server/cli.py", line 226, in run_module
log.exception("Error determining module path for sys.argv")
/Users/brandomiranda/miniconda3/envs/automl-meta-learning/bin/python: Error while finding module specification for '/Users/brandomiranda/automl-meta-learning/automl/experiments/experiments_model_optimization.py' (ModuleNotFoundError: No module named '/Users/brandomiranda/automl-meta-learning/automl/experiments/experiments_model_optimization')
luego intenté ejecutar el archivo que se queja manualmente y lo ejecuta muy bien ...
(automl-meta-learning) brandomiranda~/automl-meta-learning/automl/experiments ❯ python /Users/brandomiranda/automl-meta-learning/automl/experiments/experiments_model_optimization.py
--> main in differentiable SGD
-------> Inside Experiment Code <--------
---> hostname:
device = cpu
Files already downloaded and verified
Files already downloaded and verified
Files already downloaded and verified
incluso cuando paso el mouse sobre el nombre de la ruta y hago clic en command + click
él, me lleva a la ruta desde el código VS. Lo que parece extraño. Entonces, de alguna manera, solo cuando lo ejecuto en modo depurador no funciona. ¿Por qué?
Launch.json
{
// 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: Experiments Protype1",
"type": "python",
"request": "launch",
"module": "${workspaceFolder}/automl/experiments/experiments_model_optimization.py" // ~/automl-meta-learning/automl/experiments/experiments_model_optimization.py
},
{
"name": "Python: Current File (Integrated Terminal)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost",
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
]
},
{
"name": "Python: Module",
"type": "python",
"request": "launch",
"module": "enter-your-module-name-here",
"console": "integratedTerminal"
},
{
"name": "Python: Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"console": "integratedTerminal",
"args": [
"runserver",
"--noreload",
"--nothreading"
],
"django": true
},
{
"name": "Python: Flask",
"type": "python",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "app.py"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
],
"jinja": true
},
{
"name": "Python: Current File (External Terminal)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "externalTerminal"
}
]
}
Publicación cruzada:
fuente
launch.json
contenido de su archivo actual . Especialmente, los valoresprogram
ypythonPath
son importantes en este caso.Respuestas:
Estás usando en
module
lugar deprogram
enlaunch.json
. Al usar el módulo, debe pasar solo el nombre del módulo \ submódulo, no la ruta completa. Visual Studio cargará el módulo especificado y ejecutará su__main__.py
archivo.Esta sería la entrada correcta, suponiendo que automl sea un módulo y que los experimentos sean un submódulo:
"module": "automl.experiments"
Si desea apuntar directamente a su script, puede usar la ruta que estaba usando anteriormente, simplemente cambiando
module
aprogram
:"program": "${workspaceFolder}/automl/experiments/experiments_model_optimization.py"
fuente
~/foo/main.py
, ¿cómo puedo completar el código VS~
?${env:HOME}
. Recomiendo usar${workspaceFolder}
, ya que le permitirá mover su "proyecto" a la carpeta que desee. Para referencia: code.visualstudio.com/docs/editor/variables-reference$
!Entonces esto es lo que hice. Una vez que abrí el
launch.json
archivo yendo a la pestaña del depurador a la izquierda:Luego hice clic
Add configuration
y luego ellaunch.json
archivo se abrió. Luego, en la parte inferior derecha, hay un botón azul conAdd Configuration
:entonces me llena en el stex que apareció después de la selección
Python file
. El texto que apareció fue:y lo cambié a:
luego me aseguré de seleccionarlo en el menú de depuración izquierdo para que cada vez que lo ejecutara con el
F5
atajo ejecutara el archivo correcto sin importar dónde estaba en el código VS.Archivo actual:
Parece que
${end:HOME}
es importante para llegar a casa.fuente