我使用的是Django Rest Framework 3.5.4和Pycharm Professional 2016.3.1。顺便说一句,我让PyCharm配置为在本地流浪盒中使用virtualenv。
当我在启用调试器的情况下逐步执行DRF代码时,我可以看到它正在逐步显示空行,调试器中的变量与范围内的变量不匹配(如图所示rest_framework.response.Response.rendered_content()
):
这是另一个示例,显示调试器中作用域中的变量如何与传入的单个变量不匹配。另外,请注意断点在文档字符串中的清晰度:
这不是我第一次在PyCharm中看到过这个;虽然查看库源通常有效,但偶尔我会看到源缓存与正在执行的内容不匹配。
我的问题是:我该如何纠正这种行为?我试图吹走我的virtualenv,然后重建它并与PyCharm重新关联。我也尝试了File > Invalidate Caches / Restart
,在这个特殊情况下都没有帮助。
编辑:
我认为我已经通过删除所有〜/ Library / Caches / PyCharmXX / remote_sources / *文件,重新使缓存无效,重新启动PyCharm以及将远程解释器与项目重新关联来解决了这个问题。下次我尝试调试同一个文件时,我被给了一个屏幕来选择源。我点击自动检测,发现有两个版本可用:
我在可用的两者之间做了差异,并没有区别。此外,每个文件中的字节数和修改时间相同:
pnore at pnore-mbp in ~/Library/Caches
$ ls -l PyCharm2016.3/remote_sources/974253138/308149114/rest_framework/serializers.py
-rw-r--r-- 1 pnore HBS\Domain Users 60495 Mar 7 16:56 PyCharm2016.3/remote_sources/974253138/308149114/rest_framework/serializers.py
pnore at pnore-mbp in ~/Library/Caches
$ ls -l PyCharm2016.3/remote_sources/974253138/-328085538/rest_framework/serializers.py
-rw-r--r-- 1 pnore HBS\Domain Users 60495 Mar 7 16:56 PyCharm2016.3/remote_sources/974253138/-328085538/rest_framework/serializers.py
pnore at pnore-mbp in ~/Library/Caches
$ diff PyCharm2016.3/remote_sources/974253138/308149114/rest_framework/serializers.py PyCharm2016.3/remote_sources/974253138/-328085538/rest_framework/serializers.py
[no output]
我随意选择了后者,随后,调试行号似乎与该文件匹配。我认为问题是以前版本的PyCharm已经将该路径文件与库的缓存旧版本相关联。我不知道为什么无效的缓存本身并没有解决问题。
不幸的是,该关联不会在调试会话中保留在PyCharm中。这意味着每个调试会话都需要重新关联每个文件;事情显然是错误的。
答案 0 :(得分:0)
我有一个类似的问题,两个文件具有相同的路径,调试器使用了错误的文件,但在我的情况下文件确实略有不同。
使用PyCharm 2017.2.3在Windows上修复如下:
.PyCharm2017.2
和.PyCharm2017.1
个文件夹。答案 1 :(得分:0)
在调试配置中设置“路径映射”
答案 2 :(得分:0)
我在Mac上使用PyCharm。有同样的问题。看到我有大约六个文件夹可以追溯到2016年。删除了除最新文件夹以外的所有文件夹,它解决了这个问题。