在 Python 中导入包,属性错误
Importing packages in Python, attribute error
我是 Python 的新手,我正在尝试了解包和导入语句的工作原理。
我做了这个包,位于我的桌面:
package/
__ init __.py
module2.py
subpackage1/
__ init __.py
module1.py
这是包文件夹中 __ init __ .py 的内容:
__ all __ =["module2"]
import os
os.chdir("C:/Users/Leo--/Desktop/Package")
import subpackage1.module1
os.chdir("C:/Users/Leo--/Desktop")
并在 subpackage1 文件夹中的 __ init __ .py 中:
__ all __ =["module1"]
我想通过只写
来导入 module1.py 和 module2.py
import package
在解释器中输入上面的命令后,我可以通过编写
毫无问题地访问module1.py的任何功能
package.subpackage1.module1.mod1()
其中 mod1() 是 module1.py 中定义的函数。
但是当我输入
package.module2.mod2()
我得到 "AttributeError: module 'package' has no attribute 'module2'"(mod2() 是 module2.py 中定义的函数)。
这是为什么?
提前致谢!
你得到 AttributeError
因为你没有在 __init__.py
文件中导入 module2
。
您不应该在 __init__.py
中执行 os.chdir()
来导入子模块。
我会这样做:
__ init __.py
在 package
目录中。
from . import module2
from . import subpackage
__ init __.py
在 subpackage1
目录中。
from . import module1
我是 Python 的新手,我正在尝试了解包和导入语句的工作原理。 我做了这个包,位于我的桌面:
package/
__ init __.py
module2.py
subpackage1/
__ init __.py
module1.py
这是包文件夹中 __ init __ .py 的内容:
__ all __ =["module2"]
import os
os.chdir("C:/Users/Leo--/Desktop/Package")
import subpackage1.module1
os.chdir("C:/Users/Leo--/Desktop")
并在 subpackage1 文件夹中的 __ init __ .py 中:
__ all __ =["module1"]
我想通过只写
来导入 module1.py 和 module2.pyimport package
在解释器中输入上面的命令后,我可以通过编写
毫无问题地访问module1.py的任何功能package.subpackage1.module1.mod1()
其中 mod1() 是 module1.py 中定义的函数。 但是当我输入
package.module2.mod2()
我得到 "AttributeError: module 'package' has no attribute 'module2'"(mod2() 是 module2.py 中定义的函数)。 这是为什么? 提前致谢!
你得到 AttributeError
因为你没有在 __init__.py
文件中导入 module2
。
您不应该在 __init__.py
中执行 os.chdir()
来导入子模块。
我会这样做:
__ init __.py
在 package
目录中。
from . import module2
from . import subpackage
__ init __.py
在 subpackage1
目录中。
from . import module1