我目前正在开发一个包,并对 setuptools 感到困惑。该包包含许多依赖项,有了这些依赖项,可以通过 cli 执行多个脚本。
例如
> main_pkg
> main_pkg_which_needs_dep1
> main_pkg_which_needs_dep2
> ...
Run Code Online (Sandbox Code Playgroud)
系统上没有必要让所有脚本都可用。只有相关的。所以我想我可以简单地修改我的setup.py如下:
...
entry_points=dict(console_scripts=[
'main_pkg = main_pkg.main_pkg:main ',
'main_pkg_which_needs_dep1 = main_pkg.main_pkg:main_dep1 [dep1]',
...
]),
...
extras_require={
"dep1": ["psycopg"],
"dep2": ["apsw"],
"dep3": ["numpy"],
...
},
Run Code Online (Sandbox Code Playgroud)
并假设如果有人执行pip install main_pkg,则只能main_pkg在 CLI 中使用。(因此,如果执行,那么CLI 中pip install main_pkg[dep1]就会有main_pkg和available )main_pkg_which_needs_dep1
然而,执行pip install main_pkg还可以console_scripts通过 CLI 使所有其他内容可用,如果执行失败,例如main_pkg_which_needs_dep1由于缺少依赖项。
setuptools 是否期望这种行为?
从文档中我正在阅读以下内容:
由安装程序决定如何处理未指示 PDF 的情况(例如,省略控制台脚本、在尝试加载入口点时提供警告、假设存在额外内容并让执行稍后失败)。
另外,如果查看此处,文档会提到以下内容:
在这种情况下,hello-world 脚本仅在指示了 Pretty-printer extra 时才可行,因此如果未安装相关的额外依赖项,插件主机可能会排除该入口点(即不安装控制台脚本)。
我是否正确理解文档,安装程序(插件主机?--> pip?)必须处理这种情况,目前无法正常工作?
或者我是否必须进一步修改setup.py才能实现这种行为?
提前致谢!
小智 4
我遇到了同样的问题。基于此线程: https: //github.com/pypa/pip/issues/9726,您似乎无法选择安装控制台脚本。
但是,此评论:https://github.com/pypa/pip/issues/9726#issuecomment-826381705提出了一个可能对您有帮助的解决方案。我将复制粘贴到下面。
让 myscript 带有额外的 [cli] 依赖于 myscript-cli 包,而 myscript-cli 依赖于 myscript 但包含主包中 console_script 的入口点。
如果您安装 myscript[cli],它需要 myscript-cli 软件包,然后该软件包会被安装并包含您想要的入口点。这使得 myscript[cli] 或 myscript-cli 安装这两个软件包,但允许不需要 -cli 软件包的 myscript 安装,因此不会提供入口点。
| 归档时间: |
|
| 查看次数: |
444 次 |
| 最近记录: |