升级包,而不使用pip升级依赖关系?

我使用pip和virtualenv为我的python应用程序。 我想升级到应用程序的新版本,而不涉及依赖关系。 当我使用pip install -U ,它会尝试升级所有软件包,甚至在没有可用的新版本时卸载并重新安装相同版本的依赖软件包。

我也试过pip install -U --no-deps但是这看起来相当于一个普通的安装而不是升级。 是否有组合的标志将做我想要的?

我只是尝试了我的virtualenv项目和pip install -U --no-deps mypackage似乎工作得很好。 它只是下载mypackage,没有别的。 你的设置是什么样的?

更新 (感谢@Jether的评论):如果你使用的是最新版本的pip,那么只有在必要的时候才更新依赖关系现在是默认的行为,你不需要做任何特别的事情! 下面的答案概述了旧版本的点子(如果你想要可移植的话也适用于较新的版本)。

如果你真的不想触摸依赖关系,那么的确是要走的路

 pip install -U --no-deps mypackage 

但是我认为,除非需要,否则通常不需要升级依赖关系。 在这种情况下,您可以使用:

 pip install --upgrade --upgrade-strategy only-if-needed mypackage 

如果软件包需要比已安装的版本更新的版本,则只会更新需求。

你是对的。 我认为,当我join--no-deps它忽视了卸载现有的版本。 但我再次尝试,看看没有问题:

 $ pip install -U --no-deps myproj Downloading/unpacking myproj Downloading myproj-1.0-trunk.31072.tar.gz (43Kb): 43Kb downloaded Running setup.py egg_info for package myproj Installing collected packages: myproj Found existing installation: myproj 1.0-trunk.31053 Uninstalling myproj: Successfully uninstalled myproj Running setup.py install for myproj Successfully installed myproj Cleaning up...