[英]code navigation within python module not possible in visual studio code
首先,这是我的工作区结构:
workspace_root
├── ...
├── libs
│ └── module_name
│ ├── README.md
│ ├── module_name
│ │ ├── __init__.py
│ │ ├── caller_with_main_calls_service.py
│ │ ├── independent.py
│ │ └── service_calls_indendent.py
│ └── setup.py
├── ...
我的问题?
在 VSCode 中,我无法在模块的元素定义中导航。 这包括从import
语句直接跳转到它的定义。 我什至无法在caller_with_main_calls_service.py
启动或调试 python main ,因为它说module not found
。 通过 pip 安装模块时,它可以工作。 然而,这在开发过程中是不希望的......
到目前为止我尝试过的:
尝试.env
方法并将PYTHONPATH
设置为我的解释器 + ${workspaceRoot}+"/libs/module_name/module_name"
像这样设置工作区设置/settings.json:
{
"python.linting.pylintEnabled": true,
"python.linting.enabled": true,
"python.pythonPath": "/path/to/conda_env/python",
"python.autoComplete.extraPaths": [
"${workspaceRoot}/libs/module_name/module_name"
],
"editor.formatOnSave": true
}
$PYTHONPATH
env var 以包含 lib 路径模块中的 python 文件是什么样的:
# example: caller_with_main_calls_service.py
from module_name import service_calls_indendent as sci
不确定,如果这相关,但我正在与 WSL 合作。
[这假设您使用的是 Python 3]
导航不起作用,因为 Python 扩展正在查找您的工作区目录和PYTHONPATH
指定的任何位置。 因此,在这种情况下,您的导入对扩展没有意义,因为在workspace_root
或workspace_root/libs
下没有名为module_name
模块或包。 并且因为您指定了绝对导入,Python 只会查找具有指定名称的模块或包,而不是在您进行导入的位置旁边查找。
我不太确定您要的是什么代码/目录结构,但是要么将导入更改为from . import service_calls_indendent
from . import service_calls_indendent
或打开workspace_root/libs/module_name
作为您的工作区。
请安装下面的扩展,它会自动配置 vscode,你可以很容易地找到定义、源代码,它还会建议优化的编码方式
https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring
https://marketplace.visualstudio.com/items?itemName=trixnz.go-to-method
https://marketplace.visualstudio.com/items?itemName=ms-python.python
正如评论的那样, from . import service_calls_independent
from . import service_calls_independent
又名相对导入。
此外, launch.json
需要修改:
{
"name": "Python: Module Runner",
"type": "python",
"request": "launch",
"module": "libs.module_name.caller_with_main_calls_service",
"args": [
1,
2,
3
],
"env": {
"FOO": "BAR"
}
}
重要的部分是module
,您可以在其中指定带有 main 内部的文件 - 没有任何文件扩展名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.