Python 如何从src/main目录中公开模块名称?

Python 如何从src/main目录中公开模块名称?,python,python-3.x,project-structure,Python,Python 3.x,Project Structure,我想按如下方式执行我的模块: python -m module1 或 我有一个项目,在这个项目结构下包含module1和module2: my-project/ src/ main/ module1/ module1.py __init__.py __main__.py module2/

我想按如下方式执行我的模块:

python -m module1

我有一个项目,在这个项目结构下包含
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

\uuuu main\uuuuu.py
的外观如下:

from module1 import module1

print('module1 = ', module1.main())
module2
的一个看起来一样,只是调用了
module2
,而不是一个

现在,当尝试调用
python-m module1
python-m module2
时,我得到一个错误,即找不到模块:
没有名为module1的模块

调用
python-msrc.main.module1
python-msrc.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
不是一件事?还是我遗漏了什么?我试图找出一些可能需要更改的配置,但我没有找到任何东西

再看一遍,在每个模块中最好有一个
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行为,但仍然允许很好地构造文件。我想有一个选择,但不确定这是否是最好的选择

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