使用 pip 安装 python 包时星号 * 的用途是啥

Posted

技术标签:

【中文标题】使用 pip 安装 python 包时星号 * 的用途是啥【英文标题】:what is the purpose of an asterisk * when using pip to install python packages使用 pip 安装 python 包时星号 * 的用途是什么 【发布时间】:2021-10-12 18:35:07 【问题描述】:

我对 python 的理解非常初级/一般,我边走边学。

我最近在尝试复制一些代码时遇到了这个问题:

!sudo pip install pytest*

我收到此错误:“错误:无效要求:'pytest*'”

当我运行没有 * 的命令时,我能够安装所需的包

* 有什么用途吗?省略它会导致任何问题吗?

(我正在 Google Colab 上开发这个程序)

【问题讨论】:

我从来没有在 pip install 中使用过星号。我不知道它可以用来做什么,但你绝对不需要它来简单地安装 pytest。不用它就行。也许这是您尝试复制的代码中的拼写错误。 pytest 有多个 [子] 模块吗?例如pytest-* 匹配(例如)pytestpytest-devpytest-foo 等。 @AdamSmooch 是的,pytest 有多个子模块 【参考方案1】:

版本匹配子句包括版本匹配运算符==和版本标识符。

指定的版本标识符必须采用版本方案中描述的标准格式,但允许在公共版本标识符上使用尾随 .*,如下所述。 通过在版本匹配子句中的版本标识符后面附加一个尾随.*,可以请求前缀匹配而不是严格比较。这意味着在确定版本标识符是否与子句匹配时,将忽略附加的尾随段。如果指定版本仅包含发布段,则发布段中的尾随组件(或缺少的组件)也将被忽略。

例如,给定版本1.1.post1,以下子句将匹配或不匹配:

== 1.1        # Not equal, so 1.1.post1 does not match clause
== 1.1.post1  # Equal, so 1.1.post1 matches clause
== 1.1.*      # Same prefix, so 1.1.post1 matches clause

见here

【讨论】:

以上是关于使用 pip 安装 python 包时星号 * 的用途是啥的主要内容,如果未能解决你的问题,请参考以下文章

ModuleNotFoundError:尝试为 Django 安装 Python 包时没有名为“pip.download”的模块

Python-在没有网络的情况下pip超时无法下载包时解决包的安装

pip 安装Python包时老是出现拒绝访问的提示,除了直接下载包应该怎么办

在安装seaborn等包时,使用pip install安装不成功

pip 安装包时指定pypi资源地址

在 Windows 上安装 python-midi 包时出错