Làm cách nào để đặt chính xác mô-đun cụ thể để gỡ lỗi trong mã VS?


8

Tôi đã làm theo hướng dẫn của trang web của mã VS nhưng dường như không có gì mà tôi đã thử làm việc.

Tôi đã tạo một cấu hình mới theo yêu cầu nhưng bất cứ khi nào tôi đặt đường dẫn thì nó từ chối hoạt động trong mã VS mặc dù đường dẫn mã VS phàn nàn trong cửa sổ đầu cuối tích hợp hoạt động tốt khi tôi gọi thủ công.

Lỗi trình gỡ lỗi ném là như sau:

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

sau đó tôi đã thử chạy tập tin mà nó phàn nàn bằng tay và nó chạy rất tốt ...

(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

ngay cả khi tôi di chuột qua tên đường dẫn và nhấp vào nó, command + clicknó sẽ đưa tôi đến đường dẫn từ bên trong mã VS. Mà có vẻ bizzare. Vì vậy, bằng cách nào đó chỉ khi tôi chạy nó trong chế độ gỡ lỗi thì nó không hoạt động. Tại sao?


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

Đăng chéo:


Xin vui lòng gửi launch.jsonnội dung tập tin hiện tại của bạn . Đặc biệt, programpythonPathcác giá trị rất quan trọng trong trường hợp này.
nima

@nima đăng toàn bộ! cảm ơn vì đã nhắc nhở tôi làm điều đó Quên cách nào đó.
Charlie Parker

Câu trả lời:


3

Bạn đang sử dụng modulethay vì programtrong launch.json. Khi sử dụng mô-đun, bạn phải chỉ truyền tên mô-đun \ tên mô-đun, không phải toàn bộ đường dẫn. Visual Studio sau đó sẽ tải mô-đun được chỉ định và thực hiện __main__.pytệp của nó .

Đây sẽ là đầu vào chính xác, giả sử automl là một mô-đun và các thử nghiệm là một mô hình con:

"module": "automl.experiments"

Nếu bạn muốn trỏ đến tập lệnh của mình trực tiếp, bạn có thể sử dụng đường dẫn bạn đang sử dụng trước đó, chỉ cần thay đổi modulethành program:

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


Làm thế nào để bạn có mã VS điền vào đường dẫn nhà của bạn? tức là nếu tôi có ~/foo/main.py, làm thế nào tôi có thể điền mã VS ~?
Charlie Parker

1
Tôi không có cài đặt Linux vì vậy tôi không thể xác minh, nhưng bạn có thể thử ${env:HOME}. Tôi khuyên bạn nên sử dụng ${workspaceFolder} , vì nó sẽ cho phép bạn chuyển "dự án" của mình sang bất kỳ thư mục nào bạn muốn. Để tham khảo: code.visualstudio.com/docs/editor/variabled-reference
Gabriel Cappelli

yup đã làm việc Hãy chắc chắn bao gồm các $peeps dấu tiền !
Charlie Parker

1

Vì vậy, đây là những gì tôi đã làm. Khi tôi mở launch.jsontệp bằng cách chuyển đến tab trình gỡ lỗi ở bên trái:

nhập mô tả hình ảnh ở đây

sau đó tôi nhấp vào Add configurationvà sau đó launch.jsontập tin được mở. Sau đó, ở phía dưới bên phải có một màu xanh da trời với Add Configuration:

nhập mô tả hình ảnh ở đây

sau đó tôi điền vào stex xuất hiện sau khi chọn Python file. Văn bản xuất hiện là:

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

và tôi đã đổi nó thành:

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

sau đó tôi chắc chắn rằng tôi đã chọn nó trên menu gỡ lỗi bên trái để mỗi lần tôi chạy nó với phím F5tắt, nó sẽ chạy đúng tệp cho dù tôi đang ở đâu trong mã VS.


Tập tin hiện tại:

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

dường như ${end:HOME}là quan trọng để có được con đường về nhà.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.