Python导入无效,尽管在父文件夹中创建了__init__
为什么这个 import
语句不管用,即使我在每个文件夹里都创建了 __init__
文件?
我想从 basepackage\package1\p1\p1py.py
中导入 func1()
。根文件夹 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'
1 个回答
0
在这个包里面,你需要使用相对导入,而不是直接用包的名字来导入(这样做只有在包已经安装在你的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!
想了解更多关于相对导入的问题和答案,可以看看例如这个链接。