python - 在没有显式导入的情况下访问包中的模块/对象

标签 python

比如说,我的文件系统上有这个结构: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/

相关文章:

python - 序列化和绘制 IP 地址的标准方法?

python:如何融化保留特定顺序/自定义排序的数据框

python - 从多列中查找最接近的值并添加到 Python 中的新列

python - 如何在 Gimp python 脚本中将信息输出到控制台?

python - RASA nlu 解析未给出当前意图,但在结果中给出相同意图

赋值中的Python字典get方法

Python - 如果键等于值,则从列表中删除字典

Python从末尾读取文件,文件很大,无法读入内存

python - 初始值不适用于 django-filters 上的 ChoiceField

python - PyQt5中打开窗口和关闭窗口