在pycharm中创建项目结构的正确方法是什么?

use*_*095 7 python package pycharm

我是python的新手,我不知道如何以正确的方式组织项目结构,因此所有自动导入都可以在pycharm中运行.

这是我目前的结构.

在此输入图像描述

在PublisherSubscriberTest中,pycharm生成了这个导入

from Rabbit.RabbitReceiver import RabbitReceiver
from Rabbit.RabbitSender import RabbitSender
Run Code Online (Sandbox Code Playgroud)

但它不起作用.这是输出.

ImportError:没有名为Rabbit.RabbitReceiver的模块

我做错了什么?

我对java比较熟悉.例如在java中,我只是创建包含一些类的包,然后我就可以在项目的任何地方导入它们.AFAIK与python不一样.

有人可以向我解释一下吗?

EDIT1:是的,我知道sys.path.append.我曾经这样做过,但这对我来说似乎很奇怪,我希望能够在没有它的情况下做到这一点.

lai*_*e9m 2

import sys, os.path

sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from Rabbit.RabbitReceiver import RabbitReceiver
from Rabbit.RabbitSender import RabbitSender
Run Code Online (Sandbox Code Playgroud)

如果不想修改,唯一的办法就是运行时sys.path添加flag-m

python -m messaging_system.tests.PublisherSubscriberTest
Run Code Online (Sandbox Code Playgroud)

请参阅如何修复“尝试在非包中进行相对导入”,即使使用 __init__.py

编辑

好吧,终于找到了终极答案:十亿次相对导入

我建议你仔细阅读这篇文章,我从中学到了很多东西。

简而言之,如果你想这样做,你必须添加path-to-Rabbitsys.path.