0

我有我设计的这个包,它具有以下结构,

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.

4

0 回答 0