【问题标题】:pip: upgrade package without upgrading particular dependencypip:升级包而不升级特定依赖项
【发布时间】:2013-06-17 03:32:57
【问题描述】:

我的问题与this 问题非常相似。但它的不同之处在于,如果我正在安装一些包,我只想禁用特定依赖项的升级,而不是所有依赖项。我知道有一个标志--no-deps,但它会排除所有依赖项,而我只想排除一个。

这是一个场景:

这是最新版本中的 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 包。我也没有使用虚拟环境。请问有什么建议吗?

【问题讨论】:

  • 在示例中 Pip 尝试安装 Django 1.5,这是因为 Django 1.4 没有使用 pip 安装吗?

标签: python django pip


【解决方案1】:

这样可以让你更精确:

pip install -U django-rosetta Django==1.4

【讨论】:

    【解决方案2】:

    创建一个需求文件requirement.txt,其中包含:

    Django==1.4
    

    然后

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

    【讨论】:

    • 但如果我遵循这种方法,它将升级 requirements.txt 文件中的其余包(除了 Django)。
    • 好吧,也许我不明白你的问题,但你要求一种方法来防止升级某些特定包(Django),同时升级其他所有东西......我说的是要求文件可以用来阻止那些特定的包被升级,让 pip 升级其他的。
    • 刚刚测试过,如果您也为每个包保留版本号,它将与requirements.txt 文件一起使用。
    • @Guillaume 一个类似的问题,如何避免安装一些子依赖,比如我想安装依赖lxml的PyYAML,安装PyYAML时会自动安装..现在,我想避免安装 lxml,我会在之前或之后手动安装它.. 怎么做?
    猜你喜欢
    • 2011-02-21
    • 2019-03-20
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 2018-12-17
    • 2021-09-15
    相关资源
    最近更新 更多