使用 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 选项是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
conda 是不是从使用 pip install 安装的 pypi 更新软件包?