即使在父文件夹中创建 __init__ 之后,Python 导入也不起作用

问题描述 投票:0回答:1

即使我在每个文件夹中创建了

import
,为什么此
__init__
语句仍不起作用?

Import not working in Python

我想从

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 package python-import
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!

例如,请参阅十亿次相对进口,了解有关相对进口的各种其他问题/答案的链接。

© www.soinside.com 2019 - 2024. All rights reserved.