使用 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-*
匹配(例如)pytest
、pytest-dev
、pytest-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包时老是出现拒绝访问的提示,除了直接下载包应该怎么办