我有一个my_program.py
python脚本。
在此脚本中,我可以通过使用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"
。