我的文件结构如下:
root/
v1/
__init__.py
example_1.py
script/
__init__.py
classification.py
prediction.py
example2.py
分类如下:
#classification.py
print(__name__)
from .prediction import predict_func
def func1():
predict_func()
这很好,例如1.py,看起来像这样
#example1.py
from script.classification import func1
func1()
但是像下面这样从example2.py导入分类将失败
#example2.py
from classification import func1
func1()
因为在example2.py场景中,分类中的__name__
将只是classification
,而不是example1.py中的script.classification
,因此这里没有父节点,因此导入模块失败。你知道吗
我知道解决方案之一是将脚本目录添加到系统路径在example1.py和example2.py中,并在classificationo中使用from prediction import predict_func
。这在example1.py和example2.py中都适用,但是这是一个好方法吗?还有其他替代方法吗?你知道吗
因为
example_1.py
在root
目录中,所以我认为root
是项目的源根。因此,这个目录必须出现在Python路径中,即:sys.path
。你知道吗而且,
root
下的每个目录都应该是一个Python包。因此,script
必须有一个__init__.py
文件(通常为空)。你知道吗您应该看看关于Modules的官方Python教程。你知道吗
编辑
在下面的第二个示例中,您尝试将分类作为根包导入,但实际上不是。你知道吗
要解决此问题,您需要使用相对导入或完整包名称:
当然,要运行您的示例,您需要执行以下操作:
相关问题 更多 >
编程相关推荐