У меня есть этот пакет, который я разработал и который имеет следующую структуру:
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
.
2 Мне нравится знать, как добавить мой пакет в sys.path
.