Python: импорт scrypt из подпапки в другую подпапку - PullRequest
0 голосов
/ 24 сентября 2019

Я работаю над проектом Python (2.7), и у меня проблема с импортом.Когда я запускаю main.py, он запускает скрипты из папки тестов и т. Д. И сохраняет результаты в журналах, и все работает нормально.

/root------------
        -logs
        -staticCfg
           -config.py
        -tests
           -systemTest
              -scrypt1.py
              -scrypt2.py
           -userTest
              -uScrypt1.py

main.py

Мои статические переменные (адрес электронной почты, имя и т. Д.) Расположены в config.py.Мне нужно импортировать config.py в scrypt1.py или scrypt2.py.Я пытался добавить __init__.py в папки test, systemTest и staticCfg, но всегда получаю сообщение об ошибке.

В моем scrypt1.py:

import staticCfg as cfg
...

или

from staticCfg import *
...

Я получаю ошибку:

ImportError: No module named staticCfg

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Вы можете добавить корневую папку в PYTHONPATH.

0 голосов
/ 24 сентября 2019

Механизм импорта Python может быть немного сложнее.

Более подробную информацию можно найти в документации: Механизм импорта Python

Когда вы используете абсолютный импорт(ваш импорт не начинается с .), как и вы, путь импорта будет начинаться с вашего основного скрипта (тот, который вы запускаете).В вашем случае это scrypt1.py.Поэтому, начиная с этого места, python не может найти пакет staticCfg.

Для меня самое простое решение - создать основной скрипт в корневом каталоге и вызвать из него scrypt1.py (импортировано с использованием from tests.systemTet import scrypt1.py).В этом случае базовый пакет будет вашей root папкой, и вы будете иметь доступ к пакету staticCfg из всех ваших файлов скриптов, как вы и хотели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...