使用 pip 从存储库安装软件包时,(s)witch、(i)gnore、(w)ipe、(b)ackup 选项是啥意思?

Posted

技术标签:

【中文标题】使用 pip 从存储库安装软件包时,(s)witch、(i)gnore、(w)ipe、(b)ackup 选项是啥意思?【英文标题】:What do (s)witch, (i)gnore, (w)ipe, (b)ackup options mean when installing a package from repository using pip?使用 pip 从存储库安装软件包时,(s)witch、(i)gnore、(w)ipe、(b)ackup 选项是什么意思? 【发布时间】:2013-10-17 02:16:20 【问题描述】:

使用 pip 安装软件包时,我收到以下消息:

Obtaining some-package from git+git://github.com/some-user/some-package.git@commit-hash#egg=some_package-dev (from -r requirements.txt
 (line 3))
  git clone in /Users/me/Development/some-env/src/some-package exists with
 URL https://github.com/some-user/some-package.git
  The plan is to install the git repository git://github.com/some-user/some-package.git
What to do?  (s)witch, (i)gnore, (w)ipe, (b)ackup

我发现这种特殊情况可能是由于 URL 中的协议更改引起的(新要求使用 git://,而已经安装的使用 https://)。

但是,我想知道如果我选择其中一个选项(切换、忽略、擦除、备份)会发生什么。我在 pip 文档中找不到解释。

【问题讨论】:

git clone in X/some-package exists with。他抱怨你已经有了那个包并且不知道你想做什么(删除已安装的包?备份它?忽略它的存在?不知道开关是什么意思。可能pip 会同时安装但“隐藏”其中一个[例如在同一软件的版本之间进行选择时])。 是的,这就是我想弄清楚的。 “擦除”可能意味着删除现有的“备份”——相同但保留一份副本。但是,“忽略”不太清楚,而“切换”则非常模糊。无论如何,最好确定每个选项的预期含义。 【参考方案1】:

解释此选项的补丁已合并到 PIP 文档中,但直到 Pip 6.0 (2014-12-22) 才发布。 (https://github.com/pypa/pip/commit/b5e54fc61c06268c131f1fad3bb4471e8c37bb25)。补丁是这样写的:

--exists-action 选项

此选项指定路径已存在时的默认行为。 可能的情况:下载文件或检查存储库以进行安装, 创建档案。如果--exists-action没有定义,pip会提示 当需要决定时。

(s)女巫

仅与 VCS 结帐相关。尝试切换结帐 到适当的 url 和/或修订版。

(i)忽略

中止当前操作(例如,不复制文件,不创建存档, 不要修改结帐)。

(w)ipe

在尝试创建、下载或签出新文件之前删除文件或 VCS 签出。

(b)备份

将文件或结帐重命名为 name'.bak' * n,其中 n 是某个数字 .bak 扩展名,这样文件在某些​​时候不存在。 因此,最近的备份将是.bak 之后编号最大的备份。

这里是现在更新的文档中该选项描述的链接:https://pip.pypa.io/en/stable/cli/pip/#exists-action-option。

【讨论】:

文档链接已移动:pip.pypa.io/en/stable/reference/pip/#exists-action-option 谢谢@MikeScotty;我已经更新了答案中的链接。

以上是关于使用 pip 从存储库安装软件包时,(s)witch、(i)gnore、(w)ipe、(b)ackup 选项是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 pip 从私有 GitHub 存储库安装包?

conda 是不是从使用 pip install 安装的 pypi 更新软件包?

卸载使用 `pip install 安装的软件包。

Python pip --index-url 不限制存储库搜索

使用 pip 安装 TensorFlow

pip:从远程 git 存储库中提取更新