如何将 entry_point/console 脚本添加到使用参数的 setup.py
How to add an entry_point/console script to setup.py that uses arguments
我想向 setup.py 添加一个入口点并传入一个参数。这可能吗?如果可能的话怎么办?我试过并查阅了文档,但不知道如何去做。
示例:包格式:
mypackage/
setup.py
mypackage/
__main__.py
main.py 包含:
def main(print_me=False):
if print_me:
print("test")
setup.py 包含如下所示的控制台脚本:
entry_points={
'console_scripts': [
'test = mypackage.__main__:main(print_me=True)'
]}
这似乎行不通,如果有的话,正确的方法是什么?
根据 setuptools' documentation on "Automatic Script Creation" 这是不可能的:
The functions you specify are called with no arguments
或者你可以这样做:
在__main__.py
中:
def main_true():
return main(print_me=True)
在setup.py
中:
entry_points={
'console_scripts': [
'test = mypackage.__main__:main_true'
],
},
但在这种特殊情况下,因为 True
已经是参数 print_me
的默认参数,这可能不是必需的,将 'test = mypackage.__main__:main(print_me=True)'
更改为 'test = mypackage.__main__:main'
应该够了。
我想向 setup.py 添加一个入口点并传入一个参数。这可能吗?如果可能的话怎么办?我试过并查阅了文档,但不知道如何去做。
示例:包格式:
mypackage/
setup.py
mypackage/
__main__.py
main.py 包含:
def main(print_me=False):
if print_me:
print("test")
setup.py 包含如下所示的控制台脚本:
entry_points={
'console_scripts': [
'test = mypackage.__main__:main(print_me=True)'
]}
这似乎行不通,如果有的话,正确的方法是什么?
根据 setuptools' documentation on "Automatic Script Creation" 这是不可能的:
The functions you specify are called with no arguments
或者你可以这样做:
在__main__.py
中:
def main_true():
return main(print_me=True)
在setup.py
中:
entry_points={
'console_scripts': [
'test = mypackage.__main__:main_true'
],
},
但在这种特殊情况下,因为 True
已经是参数 print_me
的默认参数,这可能不是必需的,将 'test = mypackage.__main__:main(print_me=True)'
更改为 'test = mypackage.__main__:main'
应该够了。