'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 都指向两件事
- 将包位置设置为 sys.path。
- 将包位置设置为 PYTHONPATH 变量。
我做了这两件事,但 none 到目前为止对我有用。
编辑: 正如评论中所建议的,wrapper 是合适的解决方案。但我无法弄清楚那里有什么逻辑。任何帮助都会有所帮助。
标准库有一个模块 runpy
用于此目的:制作一个仅包含
的脚本
import runpy
runpy.run_module("my_package",alter_sys=True)
然后 运行 在 上裸露 python
那个 文件将等同于 python -m my_package
——包括设置 [=23= 的要求]sys.path
适当地,通过 PYTHONPATH
或将脚本放在包含 my_package
.
的目录中
我有一个具有以下结构的包:
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 都指向两件事
- 将包位置设置为 sys.path。
- 将包位置设置为 PYTHONPATH 变量。
我做了这两件事,但 none 到目前为止对我有用。
编辑: 正如评论中所建议的,wrapper 是合适的解决方案。但我无法弄清楚那里有什么逻辑。任何帮助都会有所帮助。
标准库有一个模块 runpy
用于此目的:制作一个仅包含
import runpy
runpy.run_module("my_package",alter_sys=True)
然后 运行 在 上裸露 python
那个 文件将等同于 python -m my_package
——包括设置 [=23= 的要求]sys.path
适当地,通过 PYTHONPATH
或将脚本放在包含 my_package
.