【问题标题】:Debug Properly with PyCharm module named io.py使用名为 io.py 的 PyCharm 模块正确调试
【发布时间】:2018-06-07 21:46:21
【问题描述】:

似乎无法在 PyCharm(2017.3.1 社区)中调试名为 io.py 的模块(在我的一些包中) - 断点永远不会命中。 重命名这个模块解决了这个问题。

问题是:在python中不推荐给模块命名io.py

  • 或者它只是 PyCharm 的一个功能/错误?
  • 是否有已知的解决方法?

谢谢

【问题讨论】:

  • 这是一个内置模块的名称..
  • 我没有提到 io.py 模块是包的一部分。这似乎是允许的:scikit-image.org/docs/dev/api/skimage.io.html
  • 您需要使用相对导入来防止混淆,或者只是将您的模块命名为其他名称。

标签: python debugging pycharm


【解决方案1】:

这是一个 Pycharm 错误 - 可以随意为他们的模块命名,包括 io.py。

对于较新版本的 Pycharm 中的修复,请找到文件 pydevd_dont_trace_files.py。就我而言,Pycharm 安装在 /opt/pycharm-2020.3,因此该文件位于:

/opt/pycharm-2020.3/plugins/python/helpers/pydev/_pydevd_bundle/pydevd_dont_trace_files.py

找到类似于以下内容的行:


    if IS_PY3K:
        # if we try to trace io.py it seems it can get halted (see http://bugs.python.org/issue4716)
        DONT_TRACE['io.py'] = LIB_FILE

并注释掉这行 DONT_TRACE 并重新启动 Pycharm。

当然,这行必须是出于正当的原因,所以我通常在调试完成后取消注释。

【讨论】:

    【解决方案2】:

    您可以在 python 文档中找到io

    https://docs.python.org/2/library/io.html

    io 是一个内置模块:

    io 模块为流处理提供 Python 接口。在 Python 2.x 中,这是作为内置文件对象的替代方案提出的,但在 Python 3.x 中,它是访问文件和流的默认接口。

    你不能创建命名为内置模块的.py 文件,它们会被重复。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2015-05-11
    • 2017-04-03
    • 2019-03-12
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多