问题
I am trying to do an import in python from one directory level up.
import sys
sys.path.append('..')
from cn_modules import exception
I get an Error from VSCode when I try to do Run Build Task as:
ImportError: No module named cn_modules
The same code works without any error from terminal (python).
I face the problem when I try to run it from VSCode Run Build task.
Any clue on what is wrong here?
Have spent quiet some time but not able to resolve this, Any help is appreciated.
NOTE: this works when i do debug using vscode too. Below are my config for launch.json and 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}"
}
回答1:
I tried to add this in my launch.json
, then it works!
"env": {"PYTHONPATH": "${workspaceRoot}"}
below is my launch.json
"name": "Python: Current File (Integrated Terminal)",
"type": "python",
"request": "launch",
"program": "${file}",
"cwd": "${workspaceRoot}",
"env": {"PYTHONPATH": "${workspaceRoot}"},
"console": "integratedTerminal"
wish it can help u! :)
回答2:
Thanks Honza Kalfus jankalfus
I have noticed that if I use File -> Close folder and then File -> Open Folder... and open the project folder again, the errors are gone. If I just restart VS Code instead, I keep getting the errors. I presume that some internal cache gets cleared?
Found here https://github.com/Microsoft/vscode/issues/10391
回答3:
This solution helps me to solve this issue permanently.Steps are given below.
- Press "Ctrl + Shift + P"
- Type: "Configure Language Specific Setting"
- Then select "Python"
- "settings.json" will open. Check in this json file if there is a line like this: {"python.jediEnabled": false} (Press "Ctrl+F" and then paste the above link to find it quickly)
- If yes, then delete or comment it out this line, save the file and reload VScode.
- DONE!
回答4:
In my case, it's nothing to do with
"env": {"PYTHONPATH": "${workspaceRoot}"}
Here is my folder/module structure:
/Dev/csproj/deploy/test.py
/Dev/csproj/util/utils.py
and in test.py, it imports the utils function
import sys
sys.path.append('../')
from util.utils import get_keyvault_secret
It has no issue if I run test.py in terminal folder /Dev/csproj/deploy/.
But if I want to debug test.py, I got the exception of "ModuleNotFoundError"
To fix it, I add this to my debug configuration launch.json
"cwd": "${workspaceRoot}\\Dev\\csproj\\deploy",
回答5:
In the file of launch.json, can try set up the env:{}, as "env":
{"PYTHONPATH":"${workspaceRoot}"}
来源:https://stackoverflow.com/questions/46520127/vscode-import-error-for-python-module