How can I debug a python code in a virtual environ

2020-07-20 06:37发布

EDIT

Using VSCode, I had an issue while debugging in a virtual environment that have different packages which are not installed in the base environment. After activating the environment with the command activate my_env, I can use the packages in the environment with usual python command as python main.py. But while debugging, I can't use the packages which are only installed in my_env. How can I debug a python code in a virtual environment using VSCode?

This is this the summary of the question. The rest has some specific info about my case.

BEFORE EDIT

I am trying to use xmltodict package with a simple code using visual studio code.

import xmltodict

with open('C:\\Users\\user\\foo.xml') as f:
    db_dict = xmltodict.parse(f.read())

print(db_dict)

I have a virtual environment named my_env, and I installed xmltodict package in it. When I activate the environment with activate my_env, this code works fine. But, when I try to use vscode debug option, it gives No module named 'xmltodict' error. Becuase vscode debug button opens new cmd and run the debugging command in it, I stopped debugging and typed activate my_envin that cmd and tried to debug again, but still it can't find the module. Also, I tried jupiter notebook in vscode, it also doesn't see the package.

I see that import xmltodict is underlined with red in vscode and it says Unable to import 'xmltodict', but it works when I run it normally from cmd. This happens sometimes for other modules and I don't know why. I installed xmltodict module using pip, maybe it causes that.

I am using Visual Studio Code 1.30.1 with Anaconda Python 3.7.1 on Windows 10.

How can I debug a python code in a virtual environment using VSCode? I saw this question, but I don't think it is exactly what I want?

2条回答
我只想做你的唯一
2楼-- · 2020-07-20 07:10

Set "python.pythonPath" to point to the interpreter in the virtual environment that you want to use.

查看更多
你好瞎i
3楼-- · 2020-07-20 07:15

I am using venv for creating virtualenv, and VS code to debug the code.

I found we don't have to create a lanuch.json file but added settings.json under {project}/.vscode/ folder worked as well. My settings.json is as below:

{
"python.testing.unittestArgs": [
    "-v",
    "-s",
    ".",
    "-p",
    "test_*.py"
],
"python.testing.pytestEnabled": false,
"python.testing.nosetestsEnabled": false,
"python.testing.unittestEnabled": true,
"python.pythonPath": "/Users/hhh/project/bin/python"

}

I can debug the project and run the unit test as well. Hope it will help you.

查看更多
登录 后发表回答