【发布时间】:2017-10-02 22:21:19
【问题描述】:
例如。我有一个包foo,其中有一个名为foo.py的模块
/home/user/tmp/testPath/
|-- foo
| |-- bar.py
| |-- foo.py
| |-- __init__.py
| `-- module.py
`-- test_package.py
如何在bar.py 中使用绝对导入来导入module.py?我试过from foo import module和import foo.module,但它总是认为foo is from foo.py
或者我应该始终避免使用与包名相同的模块文件名?
foo.py
print 'you are in foo.py'
import foo
print 'foo', foo
bar.py
print 'you are in bar.py'
import foo
print 'foo from bar', foo
from foo import module
# import foo.module
test_package.py
import sys
sys.path.insert(0, '/home/user/tmp/testPath')
import foo.bar
但错误信息是
you are in bar.py
you are in foo.py
foo <module 'foo.foo' from '/home/user/tmp/testPath/foo/foo.py'>
foo from bar <module 'foo.foo' from '/home/user/tmp/testPath/foo/foo.py'>
Traceback (most recent call last):
File "/home/user/tmp/testPath/test_package.py", line 5, in <module>
import foo.bar
File "/home/user/tmp/testPath/foo/bar.py", line 8, in <module>
from foo import module
ImportError: cannot import name module
【问题讨论】: