我试图从一个目录级别进行python导入。
import sys
sys.path.append('..')
from cn_modules import exception
当我尝试运行构建任务时,我从VSCode收到错误:
ImportError:没有名为cn_modules的模块
相同的代码在终端(python)没有任何错误的情况下工作。 当我尝试从VSCode运行构建任务运行它时,我遇到了问题。 这里有什么问题的任何线索?
安静了一段时间,但无法解决这个问题,任何帮助表示赞赏。
注意:当我使用vscode进行调试时,这也适用。下面是我对launch.json和tasks.json的配置
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Python Console App",
"type": "python",
"request": "launch",
"stopOnEntry": true,
"program": "${file}",
"externalConsole": true,
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit"
],
"env": {},
"envFile": "${workspaceRoot}/.env",
"console":"integratedTerminal",
"pythonPath": "${config:python.pythonPath}"
}
]
}
tasks.json
{
"version": "0.1.0",
"command": "/usr/bin/python",
"isShellCommand": true,
"args": ["${file}"],
"showOutput": "always",
"env": {},
"envFile": "${workspaceRoot}/.env",
"pythonPath": "${config:python.pythonPath}"
}
我试着在我的launch.json
中添加它,然后它可以工作!
"env": {"PYTHONPATH": "${workspaceRoot}"}
下面是我的launch.json
"name": "Python: Current File (Integrated Terminal)",
"type": "python",
"request": "launch",
"program": "${file}",
"cwd": "${workspaceRoot}",
"env": {"PYTHONPATH": "${workspaceRoot}"},
"console": "integratedTerminal"
希望它可以帮到你! :)
谢谢Honza Kalfus jankalfus
我注意到如果我使用文件 - >关闭文件夹然后文件 - >打开文件夹...并再次打开项目文件夹,错误就消失了。如果我只是重新启动VS代码,我会不断收到错误。我假设某些内部缓存被清除了?
就我而言,这与我们无关
"env": {"PYTHONPATH": "${workspaceRoot}"}
这是我的文件夹/模块结构:
/Dev/csproj/deploy/test.py
/Dev/csproj/util/utils.py
在test.py中,它导入utils函数
import sys
sys.path.append('../')
from util.utils import get_keyvault_secret
如果我在终端文件夹/ Dev / csproj / deploy /中运行test.py,则没有问题。 但是,如果我想调试test.py,我得到“ModuleNotFoundError”的例外 为了解决这个问题,我将其添加到我的调试配置launch.json中
"cwd": "${workspaceRoot}\\Dev\\csproj\\deploy",
在launch.json文件中,可以尝试设置env:{},作为“env”:
{"PYTHONPATH":"${workspaceRoot}"}