没有'pkg_resources'的入口点和控制台脚本?

时间:2018-06-13 17:50:40

标签: python pip setuptools entry-point pkg-resources

当我安装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时(例如venvpip 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相同。如何实现?

1 个答案:

答案 0 :(得分:2)

我不得不在此处仔细研究pip源代码,以进行有根据的猜测。

通过滚轮安装了所有安装内容后,将生成“简单”控制台脚本。因此,可以通过从包装中取出轮子并安装轮子来确保以这种方式生成它。