我有一个具有以下结构的脚本
./
/foo
__init__.py
/bar
__init__.py
module.py
我想在foo和bar包上使用module.py,但我找不到导入它的方法!
我可以将模块放在两个包中,但如果我需要进行任何更改,我必须在两个包中进行。
答案 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
。