当程序在visual studio代码中运行时,如何正确导入python模块?



我有一个my_program.pypython脚本。

在此脚本中,我可以通过使用python -m foo.my_program启动脚本来导入utils/my_util.py中的类。

my_program.py的含量

from utils.my_util import Util
u = Util()

但是当我在visual studio代码中为foo/my_program.py按下Start Debugging按钮时,它会生成以下错误:

Exception has occurred: ModuleNotFoundError
No module named 'utils'
File "/Users/my_name/debug/python_proj/foo/my_program.py", line 1, in <module>
from utils.my_util import Util

如何在visual studio代码中运行python -m foo.my_program?

我认为.vscode/launch.json中有一些东西我可以配置使程序正确运行。

我试过将"cwd"设置为"${workspaceFolder}"。但是这行不通。

这是我的脚本的文件夹结构。

.
├── foo
│   └── my_program.py
└── utils
└── my_util.py

我发现在.vscode/launch.json"configurations"下添加以下参数可以工作

"cwd": "${workspaceFolder}",
"env": {
"PYTHONPATH":"${workspaceFolder}"
}

根据本文档,${workspaceFolder}表示"VS code中打开的文件夹路径"。

这个文档说PYTHONPATH是一个环境变量,用户可以设置它来添加用户希望Python添加到sys. js的其他目录。路径目录列表

因此,将${workspaceFolder}添加到PYTHONPATH意味着python在运行import时将搜索${workspaceFolder}文件夹。

除了在启动。Json文件,也可以:

添加到设置中。json文件,它会影响终端内运行的动作,如Run Python File in Terminal:

"terminal.integrated.env.windows": {
"PYTHONPATH": "${workspaceFolder}",
},

或者,创建一个.env文件,并添加如下内容:

PYTHONPATH={some path to the parent folder of the module which you want to import, such as workspaceFolder}

,您可以通过设置中的"python.envFile"手动指向.env文件。json或"envFile"在启动。"envFile"将覆盖"python.envFile"

最新更新