Ответ 1
Как я могу использовать entry_points для генерации двоичного кода, который вызывает python -m mypackage (и передает * args, ** kwargs)?
Я думаю, что это неправильный способ взглянуть на проблему. Вы не хотите, чтобы ваш script вызывал python -m mypackage
, но вы хотите, чтобы script имел ту же точку входа, что и python -m mypackage
Рассмотрим этот простой пример:
script_proj/
├── script_proj
│ ├── __init__.py
│ └── __main__.py
└── setup.py
и минималистский setup.py:
from setuptools import setup
setup(
name="script_proj",
packages=["script_proj"],
entry_points = {
"console_scripts": [
"myscript = script_proj.__main__:main",
]
}
)
__main__.py
является фиктивным модулем и содержит метод main
.
def main():
print("Hello world!")
if __name__ == "__main__":
main()
После установки у вас есть исполняемый myscript
, который вызывает метод main
в __main__.py
.
В этом пакете дизайн python -m script_proj
также вызывает тот же метод main
.