我正在按照Python Central上的简易指南为我的代码创建一个包:
https://www.pythoncentral.io/how-to-create-a-python-package/
所以我的目录结构是:
main.py
pack1/
__init__.py
Class1.py
在main.py
文件中,我导入并使用Class1
作为:
from pack1 import Class1
var1 = Class1()
在我写的__init__.py
文件中:
import Class1 from Class1
我完全按照指南操作并仍然收到错误:
ModuleNotFoundError: No module named 'Class1' (in __init__.py)
答案 0 :(得分:8)
Python 3有absolute imports。将您的__init__.py
更改为:
from .Class1 import Class1
前导点表示相对于__init__.py
的位置找到此模块,此处位于同一目录中。否则,它会查找具有此名称的独立模块。
PEP 328提供了所有细节。从Python 3.0开始,这是the only way:
删除了语法
相对导入的唯一可接受的语法是
from .[module] import name
。不以import
开头的所有.
表单都被解释为绝对导入。 (PEP 0328)
文件Class1.py
包含以下代码:
class Class1:
pass