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

时间:2014-01-15 11:29:35

标签: python package pycharm

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

这是我目前的结构。

enter image description here

在PublisherSubscriberTest中,pycharm生成了此导入

from Rabbit.RabbitReceiver import RabbitReceiver
from Rabbit.RabbitSender import RabbitSender

但它不起作用。那是输出。

  

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

我做错了什么?

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

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

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

1 个答案:

答案 0 :(得分: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

如果您不想修改sys.path,唯一的方法是在运行时添加-m标志

python -m messaging_system.tests.PublisherSubscriberTest

请参阅How to fix "Attempted relative import in non-package" even with __init__.py

修改

好的,最后我找到了一个终极答案: Relative imports for the billionth time

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

简而言之,如果您想这样做,则必须将path-to-Rabbit添加到sys.path