首页 文章

Intellij / Pycharm无法调试Python模块

提问于
浏览
16

我使用来自wile的 PyCharm / IntelliJ 社区版来编写和调试Python脚本,但现在我正在尝试调试 Python module ,并且PyCharm执行了错误的命令行指令解析,导致执行错误,或者我正在制作一个配置错误 .

这是我的运行/调试配置:

IntelliJ run/debug Python module configuration

这是在我运行模块时执行的(这里没有问题):

/usr/bin/python3.4 -m histraw

但是当我调试时,这是IntelliJ控制台中的输出:

/usr/bin/python3.4 -m /opt/apps/pycharm/helpers/pydev/pydevd.py --multiproc --client 127.0.0.1 --port 57851 --file histraw
/usr/bin/python3.4: Error while finding spec for '/opt/apps/pycharm/helpers/pydev/pydevd.py' (<class 'ImportError'>: No module named '/opt/apps/pycharm/helpers/pydev/pydevd')

Process finished with exit code 1

如您所见,参数分析错误,在 -m 选项之后,IntelliJ调试脚本在模块名称之前传递 .

我也试过把 -m histraw 放在Script字段中,但不起作用,该字段只是放置Python脚本路径,而不是模块 .

有任何想法吗?

3 回答

  • 2

    还有另一种方法可以使它工作 . 你可以编写一个python脚本来运行你的模块 . 然后只需配置PyCharm来运行 this script .

    import sys
    import os
    import runpy
    path = os.path.dirname(sys.modules[__name__].__file__)
    path = os.path.join(path, '..')
    sys.path.insert(0, path)
    runpy.run_module('<your module name>', run_name="__main__",alter_sys=True)
    

    然后调试器工作 .

  • 19

    我发现使用以下内容创建引导程序文件(debuglaunch.py)最简单 .

    from {package} import {file with __main__}
    
    if __name__ == '__main__':
        {file with __main__}.main()
    

    例如,要在pycharm调试器中启动locustio,我创建了debuglaunch.py,如下所示:

    from locust import main
    
    if __name__ == '__main__':
        main.main()
    

    并配置pycharm如下 .

    pycharm_debug_config

    注意:除非我在main.main()上添加了断点,否则我发现无法进入调试器 . 然而,这可能是特定于locustio .

  • -2

    自PyCharm 4.5.2以来,这个问题已经解决了 . 请参阅PyCharm跟踪器中的相应问题:https://youtrack.jetbrains.com/issue/PY-15230

相关问题