更改了Python命名空间的import package.sub_module; 从包导入*`

珍妮

Python文档

考虑以下代码:

import sound.effects.echo
import sound.effects.surround
from sound.effects import *

在此示例中,echo和Surround模块被导入到当前名称空间中,因为它们在执行from ... import语句时在sound.effects包中定义。(这在定义__all__时也适用。)

我尝试以下代码

# package/
#     __init__.py
#     sub_module.py

import package.sub_module
from package import *
print(sub_module)

package/__init__.py为空时,代码可以正常工作。但是,package/__init__.py包含__all__ = []print(sub_module)会提高NameError文档手段的含义什么定义了全部内容后也可以使用


代码:

package/
    __init__.py
    sub_module.py # empty file
main.py

在main.py中:

import package.sub_module
from package import *
print(sub_module)

package/__init__.py为空时,执行python3 main.py获取<module 'package.sub_module' from '/path/to/package/sub_module.py'

package/__init__.py包含时__all__ = [],执行python3 main.py获取

Traceback (most recent call last):
File "main.py", line 3, in <module>
    print(sub_module)
NameError: name 'sub_module' is not defined
丹尼尔·赫珀(Daniel Hepper)

如果模块package定义__all__,则是由导入的模块名称列表from package import *

因此,如果您将其定义__all__为空列表,则from package import *不会导入任何内容。

尝试像这样定义它:

__all__ = ['sub_module']

另请注意,您不必from package import *使用sub_module

您也可以执行以下操作:

import package.sub_module
print(package.sub_module)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Intellij IDEA:如何自动导入Java包,而不是“ import package.SpecificClass”

来自分类Dev

python:如何导入包?

来自分类Dev

导入Python包

来自分类Dev

Python包导入子包-好的做法?

来自分类常见问题

Python“从[dot]包导入...”语法

来自分类Dev

从 git 导入自己的 Python 包

来自分类Dev

Python包:内容相互导入

来自分类Dev

import package。*以在eclipse中导入方法

来自分类Dev

带有和不带有命名空间的Python导入包

来自分类Dev

在导入pkg_resources之前,无法从同一命名空间树中的包中导入

来自分类Dev

以编程方式更改OSGi捆绑包导入

来自分类Dev

Python导入中的命名空间

来自分类Dev

无法从python包导入python模块

来自分类Dev

无法从python包导入python模块

来自分类Dev

Python:如何使用相对导入来导入包根

来自分类Dev

在Python中使用包名称导入枚举比较导入

来自分类Dev

从python的diffrent包导入文件时的相对导入错误

来自分类Dev

如何使用相对导入在pytest中导入python包

来自分类Dev

Python-如何从扩展名称空间导入父包

来自分类Dev

Ubuntu,Anaconda:无法导入python shapely包

来自分类Dev

自定义python包的导入问题

来自分类Dev

无法从父包python导入子级

来自分类Dev

Python路径说明:从子包导入

来自分类Dev

软件包中的python导入模块

来自分类Dev

Python相对导入找不到包

来自分类Dev

Python自行创建的包导入路径

来自分类Dev

Python本地包创建/导入失败(严重)

来自分类Dev

Python 3:从顶级包导入模块

来自分类Dev

从不同目录导入python包