2016-06-21 14 views
15

konfiguracji

Mam następującą strukturę drzewa w moim projekcie:Jak debugować pakiet Python w pycharm

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

metadata.py import metadata_errors.py z wyrażeniem:

from .metadata_errors.py import * 

Zatem ustawienie względna ścieżka do modułu w tym samym katalogu (zwróć uwagę na prefiks kropki).

mogę uruchomić metadata.py w pycharm 2016 redaktor dobrze o następującej konfiguracji:

enter image description here

Problem

Jednak przy tej konfiguracji nie mogę debugować metadata.py. Pycharm zwraca następujący komunikat o błędzie (częściowe ślad stosu):

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

pycharm debugger jest nazywany tak:

/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 

Pytanie

Jak mogę skonfigurować ten projekt tak, że pycharm jest w stanie uruchomić i debugować plik, który dokonuje względnego importu?

+0

Czy próbowałeś podać 'cineaste.metadata_errors' zamiast względnego importu? –

+0

Czy 'cineaste' jest oznaczony jako root źródła? – nme

Odpowiedz

1

Jednym z możliwych rozwiązań może być uruchomienie modułu za pomocą skryptu pośredniego, który będzie uruchamiany w trybie debugowania. E.g. test_runner.py:

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

Możesz również spróbować usunąć ostatni węzeł (/ cineaste) z katalogu roboczego. Taka konfiguracja prace (uruchamiania i debugowania) dla mnie (w pycharm: 2017.2.2)

enter image description here

-1

Proponuję nie używając * ponieważ może spowodować wiele problemów w przyszłości, dwie klasy lub metod ich nazwie ten sam itp.

+0

To jest dobra rada, ale nie odpowiada na pytanie OP. Byłoby to bardziej stosowne jako komentarz ... po prostu FYI dla przyszłych reakcji. – tnknepp