使用“pip”安装特定软件包版本时的双引号或单引号

Double or single quotes when installing specific package versions with `pip`

提问人:joelostblom 提问时间:7/1/2022 更新时间:7/1/2022 访问量:904

问:

Python 文档特别提到,在安装特定软件包版本时,应使用双引号和 pip

当使用比较器运算符(如 >、< 或其他一些由 shell 解释的特殊字符)时,软件包名称和版本应括在双引号中:

python -m pip install SomePackage==1.0.4    # specific version
python -m pip install "SomePackage>=1.0.4"  # minimum version

这对我来说是出乎意料的,因为大多数 Unix shell 在双引号内扩展变量,而不是单引号,我希望我们希望字符串从字面上传递给 pip,而不会发生任何可能的 shell 扩展。

我主要看到 pip 与单引号一起使用“在野外”,关于这个答案的第二条评论让我认为这是 Windows 兼容性问题。这是否正确,或者在 Bash 和 Zsh 等 Unix shell 中使用带 pip 的双引号有什么好处?

Python Bash Shell pip 行情

评论

0赞 phd 7/1/2022
"。让我觉得这是 Windows 兼容性问题......”这部分问题不应该针对作者吗?我们只能猜测,不知道。pip
0赞 joelostblom 7/1/2022
@phd是的,这可能是一个只能由 pip 开发团队回答的问题,但也有可能有一个更通用的答案,这就是我首先在 SO 上问的原因(例如,由于与默认 CMD shell 相关的东西,也许在 Windows 上总是首选双引号)。

答:

2赞 John Bollinger 7/1/2022 #1

在 Bash 和 Zsh 等 Unix shell 中使用带 pip 的双引号有什么好处吗?

假设重点是严格确保参数的(其他)字符都被视为普通字符,不,在 Bourne 家族 shell (如 Bash 和 Zsh)中,双引号严格比单引号更糟糕。然而,在实践中,我认为这种差异实际上与任何可以接受的封装规范无关。pip

请注意,至少在 Linux 和 Mac 等 Unixen 上,仅从人们期望提供的命令行参数的角度考虑因素。执行的命令( )仅看到命令行处理的结果,包括引号删除。它不知道使用了什么样的引文,如果有的话。pippip

评论

0赞 joelostblom 7/1/2022
谢谢!特别是这一部分很有帮助,这是我想知道的“然而,在实践中,我认为这种差异实际上与 pip 接受的任何包规范无关。