我有我设计的这个包,它具有以下结构,
General/
__init__.py
Vector/
__init__.py
module_1.py
module_A.py
里面有module_A
一个函数打印一个字符串。
里面有module_1
,
from ...General import module_A
module_A.function()
然后我创建一个单独的 python 文件First.py
,它只有import General.Vector.module_1
.
我把这个文件放到General的父目录中,然后将cmd定位到父目录并运行python First.py
然后我得到错误ValueError: attempted relative import beyond top-level package
但如果我module_1
改为
from .. import module_A
module_A.function()
然后这行得通。
我搜索了一个解决方案,从这篇文章中,我对相对导入有了很好的了解。然后有人向我指出,如果我添加我的包,sys.path
那么python First.py
无论First.py
它位于何处,都可以工作。
sys.path
所以我试着按照这篇文章的建议添加我的包。
我改变了First.py
我
import sys
sys.path.insert(0,'/path/to/General')
import General.Vector.module_1
但这没有用。
1我想知道module_1
's 变化的这两种不同行为的原因。
2我想知道如何将我的包裹添加到sys.path
.