我有一个setup.py文件,其中包含一个入口点,定义如下:
entry_points={
"console_scripts": [
"manage = uk_improv_guide.manage:main"]
},
当我查看运行该脚本所产生的脚本时,会得到以下信息:
root@d1a7edb637a4:/src/uk_improv_guide# cat /usr/local/bin/manage
#!/usr/local/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'uk-improv-guide','console_scripts','manage'
__requires__ = 'uk-improv-guide'
import re
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(
load_entry_point('uk-improv-guide', 'console_scripts', 'manage')()
)
root@d1a7edb637a4:/src/uk_improv_guide#
此脚本将无法启动应用程序,因为模块名称错误。在第二行,以前的“ uk_improv_guide”已转换为“ uk-improv-guide”。我现在所有的下划线都是破折号,很遗憾,这不是正确的模块。
有什么办法可以阻止这种行为?为什么我们甚至在setuptools中也有这种行为?