如何在PyCharm中调试Python包

Ale*_*ell 17 debugging pycharm python-3.x

建立

我的项目中有以下树结构:

Cineaste/
??? cineaste/
?   ??? __init__.py
?   ??? metadata_errors.py
?   ??? metadata.py
?   ??? tests/
?       ??? __init__.py
??? docs/
??? LICENSE
??? README.md
??? setup.py
Run Code Online (Sandbox Code Playgroud)

metadata.pymetadata_errors.py使用表达式导入:

from .metadata_errors.py import *
Run Code Online (Sandbox Code Playgroud)

因此,在同一目录中设置模块的相对路径(注意点前缀).

我可以metadata.py使用以下配置在PyCharm 2016编辑器中运行得很好:

在此输入图像描述

问题

但是,使用此配置我无法调试metadata.py.PyCharm返回以下错误消息(部分堆栈跟踪):

    from .metadata_errors import *
SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

PyCharm调试器被调用如下:

/home/myself/.pyenv/versions/cineaste/bin/python /home/myself/bin/pycharm-2016.1.3/helpers/pydev/pydevd.py --multiproc --module --qt-support --client 127.0.0.1 --port 52790 --file cineaste.metadata
Run Code Online (Sandbox Code Playgroud)

如何设置此项目以便PyCharm能够运行和调试进行相对导入的文件?

Mik*_*nov 15

今天(PyCharm 2018.3)确实很容易但并不明显。您可以通过在编辑配置窗口中按标签“脚本路径”来选择要运行的目标:脚本名称或模块名称:

编辑配置窗口

  • pycharm确实很好地隐藏了箭头 (3认同)

小智 3

可能的解决方案之一可能是通过中间脚本运行模块,您将在调试模式下运行该脚本。例如test_runner.py:

import runpy
runpy.run_module('cineaste.metadata')
Run Code Online (Sandbox Code Playgroud)