PyCharm 调试模式会抛出假错误,但在不调试时运行正常

问题描述 投票:0回答:1

编辑:我回滚了 PyCharm 版本,它又可以工作了。显然是 IDE 问题,现在不是脚本问题。 PyCharm 版本 2017.2.4 是我回滚到的。

所以我有一个直到今天为止一直非常适合我的脚本。由于某种原因,只要我不在调试模式下使用 PyCharm(社区版 2017.3.3),脚本就会运行良好,根本不会出现任何错误。我需要使用调试器,因此当它无缘无故地抛出错误并停止脚本时,它就会成为一个毫无意义的 IDE。

我知道这是 PyCharm 问题的原因是因为我将整个脚本复制到不同的 IDE (Wing) 中,设置为相同的 python 解释器,并在调试模式下执行它,并且运行良好,没有错误。

我已经进行了大量的错误测试,以确保错误实际上并不存在于我的脚本中;他们不是。该脚本应该按编写的方式工作。它一直说数据集不存在,或者 arcpy 工具(一种通过名为“arcpy”的库连接到 python 的空间程序)的输入特征没有值。这不是脚本问题,这是IDE问题。

有人遇到过这个问题并且知道如何解决吗?

我没有任何特定的环境设置,我只是在项目中弹出了一个 ArcGIS python 解释器,这样我就可以访问 arcpy 库,仅此而已。需要注意的是,这个解释器是python 2.7,因为ArcGIS尚不兼容python 3+。我怀疑这与它有什么关系,但你永远不知道......

这是导致问题的一大块脚本(如果您没有/不知道如何使用 ArcGIS,请不要尝试运行它,它不会为您工作)。我想指出的是,如果我在

qh_buffer
行放置一个断点,它会在尝试运行该行并显示一条 arcpy 错误消息(指出无效输入/参数)后中断(它们不是无效的,它的具体写法是这样的)应该是的,我已经检查过
qhPolys
正在创建并且存在)。然后,如果我将断点移至
crop_intersect
行并在调试中运行它,它将运行整个代码,包括缓冲区语句,但随后会出现错误 000732“输入特征:数据集 #1;#2 不存在或不受支持”(它们都存在,因为我之前已将它们硬编码到输出目录,并且它们创建得很好)。

import arcpy

arcpy.env.overwriteOutput = True

svyPtFC = r"C:\Users\xxx\GIS_Testing\Crop_Test.shp"

select_query = '"FID" = 9'

qhPolys = arcpy.Select_analysis(svyPtFC, 'in_memory/qhPolys', select_query)
qh_buffer = arcpy.Buffer_analysis(qhPolys, 'in_memory/qh_buffer', '50 
Meters')
cropFID = '"FID" = 1'
cropPoly = arcpy.Select_analysis(svyPtFC, 'in_memory/cropPoly', cropFID)
crop_intersect = arcpy.Intersect_analysis([[cropPoly, 1], [qh_buffer, 2]],
                                      r'C:\Users\xxx\GIS_Testing\crp_int.shp')
feature_count = arcpy.GetCount_management(crop_intersect)
print feature_count

如果我在缓冲区附近放置一个断点,它可能会导致缓冲区出现错误,但如果我将断点进一步向下移动,该行将运行良好,并且只会在下一个断点处中断,这是没有意义的。 ..确实解释了为什么当您只需点击“运行”而不是执行调试模式时它会起作用。没有断点!

python debugging pycharm
1个回答
0
投票

通过将

PYDEVD_USE_CYTHON=NO
环境变量添加到运行/调试配置来禁用 cython 加速对我的情况有帮助(如建议here

© www.soinside.com 2019 - 2024. All rights reserved.