如何使用 setuptools 生成调用 `python -m mypackage` 的 console_scripts 入口点?
How can I use setuptools to generate a console_scripts entry point which calls `python -m mypackage`?
我正在努力成为一名优秀的 Pythonista 并关注 PEP 338 我计划部署的包。
我也在尝试使用 setuptools entry_points{'console_scripts': ... }
选项在 python setuptools install
上生成我的可执行脚本。
如何使用 entry_points 生成调用 python -m mypackage
(并传递 *args、**kwargs)的二进制文件?
以下是我做过的一些尝试,但都没有成功:
setuptools(
...
(1)
entry_points=
{'console_scripts': ['mypkg=mypkg.__main__'],},
(2)
entry_points=
{'console_scripts': ['mypkg=mypkg.main'],},
(3)
entry_points=
{'console_scripts': ['mypkg=python -m mypkg'],},
我一直在使用的主要资源:
How can I use entry_points to generate a binary that calls python -m mypackage (and passes *args, **kwargs) ?
我认为这是看待问题的错误方式。您不希望脚本调用 python -m mypackage
,但希望脚本具有与 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__.py
中的 main
方法。
在这个包设计中 python -m script_proj
也调用相同的 main
方法。
我正在努力成为一名优秀的 Pythonista 并关注 PEP 338 我计划部署的包。
我也在尝试使用 setuptools entry_points{'console_scripts': ... }
选项在 python setuptools install
上生成我的可执行脚本。
如何使用 entry_points 生成调用 python -m mypackage
(并传递 *args、**kwargs)的二进制文件?
以下是我做过的一些尝试,但都没有成功:
setuptools(
...
(1)
entry_points=
{'console_scripts': ['mypkg=mypkg.__main__'],},
(2)
entry_points=
{'console_scripts': ['mypkg=mypkg.main'],},
(3)
entry_points=
{'console_scripts': ['mypkg=python -m mypkg'],},
我一直在使用的主要资源:
How can I use entry_points to generate a binary that calls python -m mypackage (and passes *args, **kwargs) ?
我认为这是看待问题的错误方式。您不希望脚本调用 python -m mypackage
,但希望脚本具有与 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__.py
中的 main
方法。
在这个包设计中 python -m script_proj
也调用相同的 main
方法。