Как выставить имена модулей из каталога src / main? - PullRequest
0 голосов
/ 25 февраля 2020

Я хотел бы выполнить свои модули следующим образом:

python -m module1

или

python -m module2

У меня есть проект, который содержит module1 и module2 в этой структуре проекта :

my-project/
    src/
        main/
            module1/
                    module1.py
                    __init__.py
                    __main__.py
            module2/
                    module2.py
                    __init__.py
                    __main__.py

        __init__.py
        test/
    __init__.py
    setup.py

__main__.py выглядит так:

from module1 import module1

print('module1 = ', module1.main())

Тот, что для module2 выглядит так же, просто вызывает module2 вместо единицы.

Теперь при попытке вызвать python -m module1 или python -m module2 я получаю сообщение об ошибке, что модуль не может быть найден: No module named module1

Вызов python -m src.main.module1 или python -m src.main.module2 все работает просто хорошо. Кроме того, при изменении структуры каталогов на:

my-project/
    module1/
        module1.py
        __init__.py
        __main__.py
    module2/
        module2.py
        __init__.py
        __main__.py
    test/
    __init__.py
    setup.py

, все работает как нужно!

Это просто способ обработки python, а наличие src/main просто не предмет? Или я что-то упустил? Я попытался выяснить какую-то конфигурацию, которая может нуждаться в изменении, но мне действительно не повезло найти что-либо.

1 Ответ

0 голосов
/ 25 февраля 2020

Опять же, возможно, было бы лучше иметь каталог src/main в каждом модуле? Это будет выглядеть следующим образом:

my-project/
    module1/
        src/
        __init__.py
            main/
            __init__.py
                module1.py
                __init__.py
            test/
        __init__.py
        __main__.py
    module2/
       src/
        __init__.py
            main/
            __init__.py
                module2.py
                __init__.py
            test/
        __init__.py
        __main__.py
    __init__.py
    setup.py

Эта структура, похоже, имеет желаемое поведение cli, но все же позволяет красиво структурировать файлы. Один вариант, я думаю, но не уверен, что это лучший вариант.

...