对使用单击模块"name"关键字参数的设置工具感到困惑



我对单击模块示例中给出的 Setuptools关键字参数name感到困惑。

我在安装工具文档中没有找到对name关键字参数的任何明确引用。"基本使用"下的第一次提及没有说明,仅详细说明了"新建"和"已更改"关键字。

服务和插件的动态发现描述了入口点语法,但仅提供以下关系定义:

setup()的entry_points参数接受具有.ini样式部分的字符串或映射入口点组名称的字典 到包含入口点的字符串或字符串列表 说明符。入口点说明符由名称和值组成, 用 = 符号分隔。该值由虚线模块名称组成, (可选)后跟 : 和点标识符,用于命名模块中的对象。 [我的强调]

此描述不引用name关键字参数 - 它们是否未连接?

Click Docs 中的第一个示例使name看起来像是模块名称(其中">模块"只是您的单个.py文件,即。yourscript.py),

setup(
name='yourscript',
[...stuff...]
py_modules=['yourscript'],
[...]
entry_points='''
[console_scripts]
yourscript=yourscript:cli
''',

第二个示例的命名建议名称是包名称(即"模块"的父目录,其中模块是文件的主机)。

setup(
name='yourpackage',
entry_points='''
[console_scripts]
yourscript=yourpackage.scripts.yourscript:cli
''',
)

我不确定确实有两个"名称"参数

  • 设置关键字参数name和,
  • 入口点名称
    • [name??] = [dotted module name]:[module object name])。

我不明白这些参数是否与代码中的元素有关,还是仅存在于setup.py(和相关 pip 文件)中。以及,入口点值是否是指设置值?

setup(name='…')命名你的包。 也就是说,如果您使用python setup.py sdistpython setup.py bdist_eggpython setup.py bdist_wheel创建源或二进制包,您将拥有$name-$version.tar.gz$name-$version.egg$name-$version.whl文件。如果您使用twine upload上传文件,它们将被上传到https://pypi.python.org/pypi/$name/$version.

名称通常与带有代码的目录名称相同,并且几乎总是与模块名称相同,但这不是必需的。我有一个软件包 Cheetah3,但它的模块名称是 Cheetah。

包名称不同entry_points与您的代码相关。它们是代码中的可执行条目。由于它们是在运行时执行的,因此它们当然包含模块的名称。他们一无所有

请参阅示例:

/yourpackage/ <- this is the top-level directory; can be any
not necessary the same as package or module
/yourmodule/ <- this is the top-level module directory;
it's what you use in `import yourmodule`
/setup.py

最新更新