如何在PyCharm中调试Python包

问题描述 投票:17回答:4

Setup

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

Cineaste/
├── cineaste/
│   ├── __init__.py
│   ├── metadata_errors.py
│   ├── metadata.py
│   └── tests/
│       └── __init__.py
├── docs/
├── LICENSE
├── README.md
└── setup.py

metadata.py用以下表达式导入metadata_errors.py

from .metadata_errors.py import *

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

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

enter image description here

Problem

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

    from .metadata_errors import *
SystemError: Parent module '' not loaded, cannot perform relative import

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

Question

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

python-3.x debugging pycharm
4个回答
3
投票

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

import runpy
runpy.run_module('cineaste.metadata')

2
投票

您也可以尝试从工作目录中删除最后一个节点(/ cineaste)。这个配置适合我(运行和调试)(在Pycharm:2017.2.2)

enter image description here


1
投票

我知道几年前问了这个问题,但我今天来到这里。也许有人也会试着在以后找到答案。

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

Edit Configuration Window


-1
投票

我建议不要使用*,因为这可能导致将来出现许多问题,两个类或方法被命名为相同等。

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