即使我在每个文件夹中创建了
import
,为什么此 __init__
语句仍不起作用?
我想从
func1()
导入 basepackage\package1\p1\p1py.py
。根文件夹basepackage
位于我的桌面上。
import package1.p1.p1py
import basepackage.package1.p1.pipy as okay '''this king of import statement is showing error'''
okay.func1()
package1.p1.p1py.func1()
上面的代码不起作用,并抛出以下错误:
File "c:\Users\shiv\Desktop\basepackage\package1\p11\p11py.py", line 1, in <module>
import package1.p1.p1py
ModuleNotFoundError: No module named 'package1'
在包内,您需要使用相对导入,而不是从包名称本身导入(只有当包已安装在您的Python路径中时才有效)。
例如,如果我设置了一个如下的包:
base
.
└── package1
├── __init__.py
├── p1
│ ├── __init__.py
│ └── p1py.py
└── p11
├── __init__.py
└── p11py.py
和
p1py.py
包含:
def func1():
print("Hello!")
然后,如果您希望
p11py.py
能够使用 func1
,那么您可以让它包含:
# relative import from p1.p1py
from ..p1.p1py import func1
def func2():
# use func1!
func1()
然后,在
base
目录中,您可以执行以下操作:
from package1.p11.p11py import func2
func2()
Hello!
例如,请参阅十亿次相对进口,了解有关相对进口的各种其他问题/答案的链接。