Python 2.7 VS代码调试总是在Python中的内部模块上产生错误
我回答了自己的问题,请参阅下面的解决方案。把这一切留给子孙后代,因为我做了很多别人说过会为他们工作的事,也曾为他们工作过,但没有一件是有效的 问题 下面是一个非常简单的python文件。当尝试在此文件上使用Visual Studio代码的调试器时,我总是在任何内部模块上获得一个Python 2.7 VS代码调试总是在Python中的内部模块上产生错误,python-2.7,visual-studio-code,visual-studio-debugging,vscode-settings,Python 2.7,Visual Studio Code,Visual Studio Debugging,Vscode Settings,我回答了自己的问题,请参阅下面的解决方案。把这一切留给子孙后代,因为我做了很多别人说过会为他们工作的事,也曾为他们工作过,但没有一件是有效的 问题 下面是一个非常简单的python文件。当尝试在此文件上使用Visual Studio代码的调试器时,我总是在任何内部模块上获得一个ImportError,例如app.models或app.tests.scripts.stubs。如果这些模块列在下面faker或任何其他外部模块中,则调试器将通过该外部模块而不会抛出错误,但会在app.models或首先
ImportError
,例如app.models
或app.tests.scripts.stubs
。如果这些模块列在下面faker
或任何其他外部模块中,则调试器将通过该外部模块而不会抛出错误,但会在app.models
或首先列出的任何内部模块上抛出错误。这在我尝试过的8-10个文件中是正确的
我试过的
我已经在launch.json和用户设置中指定了确切的pythonPath,如下所示。我添加了“例外处理”
以忽略导入程序。我已经卸载并重新安装了Don Jayamanne优秀的Python扩展。我已经运行了Python:selectworkspace解释器
,并将其指向/.venv/bin/python2.7
,/.venv/bin/python2
,以及“`./.venv/bin/python2”
文件夹
launch.json Python配置
Python文件
解决方案
在浏览我所做的一切的同时,为了发布这个问题,我尝试将路径程序
从“${file}”
更改为它的绝对路径。这使得调试器能够在导入之外无错误地执行。然后我遇到了一个问题,因为我不在任何环境中,所以我在我的机器上输入了一个dev
环境,尽管我不需要在VSCode中更改任何其他内容。然而,我现在遇到了一个未经验证的断点问题,我正在寻找这个问题。我一弄清楚就会更新
我试图解决的未经验证的断点问题
我将“program”
改回“${file}”
,调试工作完全按照预期进行,断点在这样一个超级简单的文件上工作
import sys
print(sys.version)
print(sys.executable)
然而,尽管在
launch.json
中指定了“exceptionHandling”
,但这会导致在一个更复杂的文件上再次出现导入错误 感谢分享您对此问题的解决方案。由于此问题已解决,请将其标记为答案,以便帮助其他社区成员解决相同问题。@Jackzai MSFT感谢您的提醒。为了接受我的答案,我改投了更高的票,它给了我一个警告,所以我继续前进。我只是正确地接受了我的答案。
from app.models import Kelly
import app.tests.scripts.stubs
from faker import Faker
import factory
from datetime import datetime
from bson.objectid import ObjectId
fake = Faker()
kelly_names = [REDACTED]
class KellyFactory(factory.Factory):
class Meta:
model = Kelly
id = ObjectId()
is_archived = False
email = factory.LazyAttribute(
lambda kel: '%s@email.com' % kel.name.split()[0])
name = fake.word(ext_word_list=kelly_names)
phone = fake.phone_number()
date_last_modified = datetime.now()
kelly = KellyFactory()
import sys
print(sys.version)
print(sys.executable)