我的项目中有以下树结构:
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能够运行和调试进行相对导入的文件?
一种可能的解决方案是通过中间脚本运行模块,您将在调试模式下运行该脚本。例如。 test_runner.py:
import runpy
runpy.run_module('cineaste.metadata')
我知道几年前问了这个问题,但我今天来到这里。也许有人也会试着在以后找到答案。
今天(PyCharm 2018.3)它真的很容易但不明显。您可以通过在编辑配置窗口中按“脚本路径”标签来选择要运行的目标:脚本名称或模块名称:
我建议不要使用*
,因为这可能导致将来出现许多问题,两个类或方法被命名为相同等。