'python -m' 命令的包装器

Wrapper for 'python -m' command

我有一个具有以下结构的包:

my_package
 |-- src
 |    |-- __init.py__
 |    |-- __main.py__
 |    |-- foo.py
 |    |-- bar.py
 |-- setup.py

我试图在 main.py 中导入 foo 和 bar,但在使用命令 python my_package 来自终端,但使用命令 [=46 运行完美=] -m src 来自 my_package 目录。我想排除 -m 标志。我在互联网上找到的所有 material 都指向两件事

我做了这两件事,但 none 到目前为止对我有用。

编辑: 正如评论中所建议的,wrapper 是合适的解决方案。但我无法弄清楚那里有什么逻辑。任何帮助都会有所帮助。

标准库有一个模块 runpy 用于此目的:制作一个仅包含

的脚本
import runpy
runpy.run_module("my_package",alter_sys=True)

然后 运行 在 上裸露 python 那个 文件将等同于 python -m my_package——包括设置 [=23= 的要求]sys.path 适当地,通过 PYTHONPATH 或将脚本放在包含 my_package.

的目录中