2013-06-20 89 views
8

我的问题是非常相似的this问题。但它的不同之处在于,如果我正在安装一些软件包,我只想禁用特定依赖项的升级而不是所有依赖项。我知道有一个国旗0​​但它会排除所有依赖,而我只是想排除一个。点:升级包没有升级特别依赖

这里有一个场景:

这里是django-rosetta依赖于最新版本:

install_requires=[ 
    'six >=1.2.0', 
    'Django >= 1.3' 
] 

现在我想升级rosetta pip install -U django-rosetta 。但它试图下载并安装Django 1.5,因为在rosetta依赖Django >= 1.3是必需的(我不希望它做到这一点,因为Django 1.4已经安装),我只希望它升级six包,如果有任何。

--no-deps标志将不起作用,因为它也会排除six包。另外我不使用虚拟环境。有什么建议吗?

+0

在画中画试图安装'Django的例子1.5',是因为'Django 1.4'没有使用pip安装? –

回答

18

这工作,并让您更准确:

pip install -U django-rosetta Django==1.4 
+1

确实如此。 – slumtrimpet

7

创建一个包含必需的文件requirement.txt

Django==1.4 

然后

pip install -U django-rosetta -r requirement.txt 
+0

但是,如果我遵循这种方法,它会升级剩下的packages(除了Django)在requirements.txt文件中。 –

+0

好吧,也许我不明白你的问题,但你要求一种方法来防止升级某些特定的软件包(Django),同时升级其他一切...我说的是需求文件可以用来阻止这些特定的软件包进行升级,并让其他人升级。 – Guillaume

+0

经过测试,如果您还为每个软件包保留版本号,它将与'requirements.txt'文件一起工作。 –