【发布时间】:2018-11-23 09:31:53
【问题描述】:
当我安装pip(例如使用venv)时,<venv>/bin/pip 如下:
#!"<venv>/bin/python"
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
它们对应的入口点定义为"pip=pip._internal:main"。
当我安装我的app(例如使用venv 和pip install -e .)时,<venv>/bin/app 如下:
#!"<venv>/bin/python"
# EASY-INSTALL-ENTRY-SCRIPT: 'app','console_scripts','app'
__requires__ = 'app'
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('app', 'console_scripts', 'app')()
)
我对应的入口点定义为'app=app:main'。
为什么会有这样的差异?我想避免在生成的脚本中使用pkg_resources,就像pip一样。如何实现?
【问题讨论】:
标签: python pip setuptools entry-point pkg-resources