将python模块向上拉入包名称空间

将python模块向上拉入包名称空间,python,namespaces,Python,Namespaces,如果我有这样的目录结构: package/ __init__.py functions.py #contains do() classes.py #contains class A() 我想打电话给你 import package as p 如何使函数,类的内容可以通过以下方式访问: p.do() p.A() 代替: p.functions.do() p.classes.A() 文件中的细分只是为了方便(允许更轻松的协作),但我更希望所有内

如果我有这样的目录结构:

package/
    __init__.py
    functions.py      #contains do()
    classes.py        #contains class A()
我想打电话给你

import package as p
如何使
函数
的内容可以通过以下方式访问:

p.do()
p.A()
代替:

p.functions.do()
p.classes.A()
文件中的细分只是为了方便(允许更轻松的协作),但我更希望所有内容都位于同一名称空间中。

您可以在
\uuuu init\uuuuuuuuuuy.py
中执行此操作(因为这是您在
导入包时导入的内容):

然而,这并不是例外。相反,许多包显式导入有限的常用名称集,例如

from package.functions import do
from package.classes import A

这也允许直接访问
do
A
,但它不太容易发生名称冲突和其他来自
import*
的问题,谢谢。我不需要
导入*
,选择函数效果很好。我不知道这样做(
从B导入B
)会将
B
作为
package.B
放入
package
名称空间。虽然现在有点明显了。
from package.functions import do
from package.classes import A