Для того чтобы быть импортированным, необходимо ли, чтобы каталог находился в sys.path? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть этот пакет, который я разработал и который имеет следующую структуру:

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.

...