簡體   English   中英

如何在 PyCharm 中調試 Python 包

[英]How to debug a Python package in PyCharm

設置

我的項目中有以下樹結構:

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

在此處輸入圖片說明

問題

但是,使用此配置我無法調試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

問題

如何設置此項目,以便 PyCharm 能夠運行和調試進行相對導入的文件?

今天(PyCharm 2018.3)確實很容易但並不明顯。 您可以通過在編輯配置窗口中按標簽“腳本路徑”來選擇要運行的目標:腳本名稱或模塊名稱:

編輯配置窗口

一種可能的解決方案是通過中間腳本運行您的模塊,您將在調試模式下運行該腳本。 例如 test_runner.py:

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

您也可以嘗試從工作目錄中刪除最后一個節點 (/cineaste)。 此配置對我有效(運行和調試)(在 Pycharm 中:2017.2.2)

在此處輸入圖片說明

我建議不要使用*因為這會在未來導致很多問題,兩個類或方法的名稱相同等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM