我对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文件)中。并且,入口点值是否指向设置值?
答案 0 :(得分:1)
setup(name='…')
为您的包命名。即如果您使用python setup.py sdist
或python setup.py bdist_egg
或python 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