Я следовал инструкции веб-сайта кода VS, но казалось, что ничего, что я пробовал, не сработало.

При необходимости я создал новую конфигурацию, но всякий раз, когда я указываю путь, он отказывается работать в коде VS, хотя код пути VS, на который жалуется код в окне интегрированного терминала, работает нормально, когда я вызываю его вручную.

Ошибка, которую выдает отладчик, следующая:

(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')

Затем я попытался запустить файл, он жалуется вручную, и он запускает его просто отлично ...

(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

Даже если я наведу курсор на имя пути и нажму на него command + click, он приведет меня к пути из кода VS. Который кажется странным. Так или иначе, только когда я запускаю его в режиме отладчика, он не работает. Зачем?


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"
        }
    ]
}

Перекрестная размещены :

8
Charlie Parker 13 Фев 2020 в 22:49

2 ответа

Лучший ответ

Вы используете module вместо program в launch.json. При использовании модуля вы должны передавать только имя модуля \ подмодуля, а не весь путь. Затем Visual Studio загрузит указанный модуль и выполнит его __main__.py файл.

Это был бы правильный ввод, предполагая, что automl - это модуль, а эксперименты - это подмодуль:

"module": "automl.experiments"

Если вы хотите указать свой сценарий напрямую, вы можете использовать путь, который вы использовали ранее, просто изменив module на program:

"program": "${workspaceFolder}/automl/experiments/experiments_model_optimization.py"

2
Gabriel Cappelli 20 Фев 2020 в 18:20

Так вот что я сделал. Как только я открыл файл launch.json, перейдя на вкладку отладчика слева:

enter image description here

Затем я нажал на Add configuration, а затем открылся файл launch.json. Затем в правом нижнем углу есть синяя кнопка с Add Configuration:

enter image description here

Затем я заполнил стекс, который появился после выбора Python file. Текст, который появился, был:

        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }

И я изменил это на:

        {
            "name": "Python: My Trainable",
            "type": "python",
            "request": "launch",
            "program": "/Users/brandomiranda/automl-meta-learning/prototyping_tests_playground/trainable_optimizers/my_trainable.py",
            "console": "integratedTerminal"
        },

Затем я убедился, что выбрал его в левом меню отладки, чтобы каждый раз, когда я запускал его с помощью F5, он запускал нужный файл независимо от того, где я был в коде VS.


Текущий файл:

{
    // 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: My Trainable Step Size Higher",
            "type": "python",
            "request": "launch",
            "program": "/Users/brandomiranda/automl-meta-learning/prototyping_tests_playground/trainable_optimizers/trainable_step_size.py",
            "console": "integratedTerminal"
        },
        {
            "name": "Python: Experiments Protype1",
            "type": "python",
            "request": "launch",
            "program": "${env:HOME}/automl-meta-learning/automl/experiments/experiments_model_optimization.py",
            "console": "integratedTerminal"
        },
        {
            "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"
        }
    ]
}

Кажется, ${end:HOME} важен для получения домашнего пути.

1
Charlie Parker 27 Фев 2020 в 22:16