Ошибки об импорте Python - PullRequest
       18

Ошибки об импорте Python

1 голос
/ 29 апреля 2019

У меня проблемы с импортом и структурой файла. Я создал пользовательские пакеты, которые вызываются в моих компонентах скрипта. Я хотел бы использовать "import" "from", но мои пакеты недоступны.

Вот моя древовидная структура:

|- __init__.py
|- main.py
|- project/
    |- __init__.py
    |- components/
        |- __init__.py
        |- packages/
            |- __init__.py
            |- HERE MY PACKAGES pkg_insert_bdd.py
        |- scripts
            |- __init__.py
            |- HERE MY SCRIPTS -> import pkg_insert_bdd

Все скрипты выполняются в main.py Но проблема в том, что когда скрипт выполняется, он не может найти пакет.

# my_script in folder scripts
from project.components.packages.pkg_insert_bdd import Database

Этот фрагмент кода присутствует в моем скрипте.

Вот результат, возвращаемый Python:

ModuleNotFoundError: No module named 'project'

У вас есть идеи по поводу моей ошибки? Или рекомендации по древовидной структуре я использую?

Спасибо за ваш отзыв!

Ответы [ 3 ]

1 голос
/ 29 апреля 2019

Несколько вопросов: 1) Как и где вы выполняете свой сценарий?2) Выполняете ли вы его как модуль или как отдельный скрипт?

Если вы выполняете свой скрипт как:

python3 -m main

в вашем крайнем каталоге

и до сих порПолучив ошибку, попробуйте следующее:

1) В терминале введите перед запуском скрипта следующее:

export PYTHONPATH=$PYTHONPATH:path_to_your_project/project_name

2) Затем выполните:

python3 -m main
0 голосов
/ 29 апреля 2019

Вы не можете импортировать модуль внутри него.

Вот почему он не работает, потому что вы пытаетесь импортировать модуль project из папки scripts, которая находится внутри этого модуля.

Чтобы решить эту проблему, вам нужно переместить папку scripts из модуля project и поместить ее в ту же директорию, что и main.py, чтобы Python успешно импортировал модуль.

ОБНОВЛЕНИЕ:

Если вы хотите протестировать каждый скрипт отдельно, вам нужно будет создать модуль с именем tests рядом с main.py.Вот как должно выглядеть дерево файлов:

|- __init__.py
|- main.py
|- tests
    |- __init__.py
    |- test_script1.py
    |- test_script2.py
    |- ....
|- scripts
    |- __init__.py
    |- script1.py
    |- script2.py
    |- ....
|- project/
    |- __init__.py
    |- components/
        |- __init__.py
        |- packages/
            |- __init__.py
            |- HERE MY PACKAGES pkg_insert_bdd.py
0 голосов
/ 29 апреля 2019

Если вы используете pycharm, пожалуйста, поместите приведенный выше код в ту же структуру в имя папки, например: bdd_framework.Откройте проект в pycharm и щелкните правой кнопкой мыши на папке (bdd_framework) -> выберите «Пометить как каталог» -> «Корень источников».Это решит проблему.

...