比如说,我的文件系统上有这个结构:f/o/o/bar.py
。我怎样才能轻松便捷地访问 bar.py
内容?
据我所知,我不能简单地使用:
import f #Presumably sets initial point from where to search.
print(f.o.o.bar.object)
在这种情况下,import f
将在 f
的 __init__.py
中寻找变量。
当我使用下面的代码时,它可以工作,但似乎我必须为每个模块使用这样的导入:
import f.o.o.bar
print(f.o.o.bar.object)
那么,有没有更简单的方法来处理包,如下所示:
import sys
print(sys.argv)
虽然 'argv' 没有显式导入,但我们可以访问它。
附言看来问题出在 Python 本身:@ 2.7.5 一切正常,但 @ 3.2.5、3.3.2 他导致了错误。
最佳答案
如果你想让它们自动导入,那么你需要在__init__.py
文件中指定:
# f/__init__.py:
import o
# f/o/__init__.py:
import o
# f/o/o/__init__.py:
import bar
# f/o/o/bar.py:
object = 3
然后:
>>> import f
>>> f.o.o.bar.object
3
[编辑]:上面的代码适用于 python 2.x。既然你想使用 python 3.x,你应该将上面的每个 import
语句替换为“from .import”(它也适用于 python 2.7)。例如:
# f/__init__.py:
from . import o
关于python - 在没有显式导入的情况下访问包中的模块/对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18900954/