Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python导入所有模块对象_Python_Python 3.x - Fatal编程技术网

Python导入所有模块对象

Python导入所有模块对象,python,python-3.x,Python,Python 3.x,我有以下文件: ./main.py ./lib/__init__.py ./lib/lib.py , , , 我不知道为什么定义了lib.lib,它不是lib.py文件中的变量。 有什么想法吗?对象是lib包中嵌套的lip.py文件 导入子模块后,它也可以作为包的属性使用(除非您在\uuuuu init\uuuuuuuuuuuuy.py文件中还包含lib名称) Python 3.3模块加载器(在Python中实现)只需设置: 这种行为或多或少隐含在以下内容中: 所有模块都有一个名称。子包名称用

我有以下文件:

./main.py
./lib/__init__.py
./lib/lib.py
,

,

,

我不知道为什么定义了
lib.lib
,它不是lib.py文件中的变量。
有什么想法吗?

对象是
lib
包中嵌套的
lip.py
文件

导入子模块后,它也可以作为包的属性使用(除非您在
\uuuuu init\uuuuuuuuuuuuy.py
文件中还包含
lib
名称)

Python 3.3模块加载器(在Python中实现)只需设置:

这种行为或多或少隐含在以下内容中:

所有模块都有一个名称。子包名称用点与其父包名称隔开,类似于Python的标准属性访问语法。因此,您可能有一个名为
sys
的模块和一个名为
email
的包,后者又有一个名为
email.mime
的子包和该子包中的一个名为d
email.mime.text


当您应该尝试使用lib文件中的功能时,您似乎正在尝试引用lib.py文件。例如,
lib.somelibfunction()
…您有两行
cat main.py
行;我认为第一行应该是
cat lib/lib.py
。谢谢,您能告诉我在文档中这一行为是在哪里指定的吗?@simonzack仔细阅读,还有@simonzack:我怀疑它可能在中有记录,但我仍在扫描它。@martijnpieter这部分,也许?"每当加载包的子模块时,Python都会确保首先加载包本身,如有必要,加载包的
\uuu init\uuu.py
文件。包也是如此。因此,当执行语句
import Sound.Effects.echo
时,它首先确保加载
Sound
,然后确保
Sound.effect
cts已加载;只有在加载之后,它才能确保
Sound.Effects.echo
已加载(如果以前没有加载过,则加载)。“但不确定这在Python 3中是否有所不同。@JAB:No.
lib.\uuu dict\uuuu['lib']
被设置为支持这样一种期望,即
lib.lib
即使在
lib/\uuu init\uuuuuuuuuuuupy
中没有以该名称显式导入,也应该工作。
$ cat lib/lib.py

def method():
    return 'method'
$ cat lib/__init__.py

from .lib import *
$ cat main.py

import lib

def main():
    print(lib.lib)

if __name__=='__main__':
    main()
# [find a loader and load the module object, setting sys.modules[name]]
module = sys.modules[name]
if parent:
    # Set the module as an attribute on its parent.
    parent_module = sys.modules[parent]
    setattr(parent_module, name.rpartition('.')[2], module)