2013-10-14 65 views
0

我必须在这里丢失一些简单的东西。无法使用__init__.py

我有一个目录结构:

maths/ 
    __init__.py 
    test.py 
    ... 

    foo/ 
     __init__.py 
     ... 

    bar/ 
     __init__.py 
     ... 

在多个文件(但不是全部),我使用的模块的路径 - 在Ubuntu上,例如 - 这条道路是/home/nebffa/Desktop/maths对于某些任务。但是,我必须计算所有这些文件中的maths包的路径 - 所以我想也许只有通过__init__.py才可以获得它。至少这就是我认为我可以做的基础上在__init__.py读 - 可能我错了?

无论如何,试图通过将它们放在基地__init__.py中失败,我认为我可能会误解这个Python概念。

+2

什么是 “test.py只是itertools” 是什么意思? – Adam

+1

@Adam'test.py'中的文字实际上就是'itertools',这足以引发这个错误。 –

+0

@WaleedKhan是对的 – nebffa

回答

1

如果运行python test.py然后__init__.py是不参与的。

+0

如何运行它,以便涉及'__init __。py'? – nebffa

+0

你必须在'maths'文件夹本身作为一个模块运行它。 – SethMMorton

+0

你必须导入整个'maths'模块,或导入'maths.test' – Adam

1

mathsmaths.test是两个单独的模块,每个都有自己的独特的命名空间。如果您希望在那里可用,您需要明确导入itertoolsmaths.test

此外,python -m maths.test

+0

我以为我可以把东西放在'__init __。py'中,它们会在试图运行/导入test.py时自动导入? – nebffa

+0

不可以。每个模块都有自己独特的名称空间。 –

+0

@nebffa为什么不在'test.py'中放入'import itertools'? – Adam