使用Click模块

时间:2018-04-14 18:36:56

标签: python click setuptools

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

我没有在Setuptools Documentation中找到任何关于name关键字参数的明确引用。 Basic Use下的第一次提及不提供任何说明,只有New and Changed keywords详细说明。

Dynamic Discovery of Services and Plugins描述了入口点语法,但仅提供了这些关系定义:

  

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

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

Click Docs中的第一个示例name似乎是模块名称(其中'module'只是您的单个.py文件,即。 yourscript.py),

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

第二个示例的命名建议名称是包名称(即“模块”的父目录,其中module是一组文件)。

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

我确实有两个“名字”论据,我不确定

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

我不明白这些参数是否与代码中的元素相关,或者只存在于setup.py(和相关的pip文件)中。并且,入口点值是否指向设置值?

1 个答案:

答案 0 :(得分:1)

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