从另一个包导入python模块

时间:2014-03-23 10:24:14

标签: python import module package

我有一个具有以下结构的脚本

./
    /foo
       __init__.py
    /bar
       __init__.py
    module.py

我想在foo和bar包上使用module.py,但我找不到导入它的方法!

我可以将模块放在两个包中,但如果我需要进行任何更改,我必须在两个包中进行。

3 个答案:

答案 0 :(得分:1)

这实际上有点棘手,假设我们有这样的结构:

├── bar
│   ├── __init__.py
│   └── some_bar.py
├── foo
│   ├── __init__.py
│   └── some_foo.py
└── something.py

something.py some_foo.py获取对象的正确方法是添加:

# foo/some_foo.py
from something import some_module

然后从顶级目录运行some_foo作为模块,使用-m选项如下:

python -m foo.some_foo

something.py添加一些打印语句来测试它,如果一切正常,你应该在运行some_foo后看到来自something.py的一些输出。请记住,您需要从顶级运行some_foo,而不是从foo目录运行。

答案 1 :(得分:0)

__init__.py放在module.py旁边。

更多信息http://docs.python.org/3/tutorial/modules.html?highlight=packages#packages

答案 2 :(得分:0)

如果import foo有效,则import module也适用于您的情况。

如果您需要使用from toplevel import foo导入foo,则可以使用from toplevel import module导入module