使用distutils打包和安装Python包有点怪异。
例如:
1. 我们没有办法命名一个脚本去满足Windows和POSIX两个平台的约定。
2. 你不得不单独创建一个“main”脚本文件,而实际上,真正的main在其它地方。
Setuptools通过自动生成有正确后缀的脚本从而解决这些问题。在Windows上它甚至会创建.exe文件,然而用户甚至并不需要改变PATHEXT配置。
实现方法:
在setup脚本中定义entry points并表明哪个函数生成的脚本需要导入并运行。
例如:
setup(
# other arguments here...
entry_points={
"console_scripts": [
"foo = my_package.some_module:main_func",
"bar = other_module:some_func",
],
"gui_scripts": [
"baz = my_package_gui:start_func",
]
}
)
当这个项目在非window平台下安装(setup.py install, setup.py develop, pip install)时,一系列脚本如foo, bar和baz脚本就是被自动安装。
在window平台,则foo.exe, bar.exe和baz.exe则会被创建和安装。