【问题标题】:Entry Points and Console Scripts Without 'pkg_resources'?没有“pkg_resources”的入口点和控制台脚本?
【发布时间】: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(例如使用venvpip install -e .)时,&lt;venv&gt;/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


    【解决方案1】:

    我不得不挖掘 pip 源代码,以便在这里做出有根据的猜测。

    “简单”控制台脚本是在您安装的任何内容通过轮子安装时生成的。所以你可以通过从你的包中制作一个轮子并安装轮子来确保它是这样生成的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-13
      • 2013-10-13
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多