Django 如何使用pip和需求文件升级特定软件包?
我在一个virtualenv中为我的Django项目使用带有需求文件的pip。我正在尝试升级一些软件包,尤其是Django本身,但在源代码冲突方面出现了一个错误:Django 如何使用pip和需求文件升级特定软件包?,django,virtualenv,pip,Django,Virtualenv,Pip,我在一个virtualenv中为我的Django项目使用带有需求文件的pip。我正在尝试升级一些软件包,尤其是Django本身,但在源代码冲突方面出现了一个错误: /build/Django中的源代码版本1.2.3与Django==1.2.4冲突(来自-r requirements/apps.txt(第3行)) 这是在我的需求文件中将Django的版本号从1.2.3更新为1.2.4之后。我正在使用此命令实际执行升级: pip --install --upgrade -E `<virtual
/build/Django中的源代码版本1.2.3与Django==1.2.4冲突(来自-r requirements/apps.txt(第3行))
这是在我的需求文件中将Django的版本号从1.2.3更新为1.2.4之后。我正在使用此命令实际执行升级:
pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>
pip--install--upgrade-E`--requirement`
我找不到任何触发重新下载整个包的标志。我甚至尝试先运行卸载命令,然后再安装,但没有成功。我遗漏了什么吗?首先确保您已经检查过了
我不确定这是否正是您的问题,但在我的情况下,我无法将Django升级到1.2.4-我总是以1.2.3版本完成,因此我卸载了Django,其中包括:
<virtualenv>/bin/pip uninstall Django
/bin/pip卸载Django
然后我删除了/build/Django
目录,最后安装了正确的版本,包括:
<virtualenv>/bin/pip install Django
/bin/pip安装Django
我运行了以下命令,并将其从1.2.3升级到1.4.0
pip install Django --upgrade
升级的快捷方式:
pip install Django -U
注意:如果要升级的软件包有任何要求,此命令将另外将所有要求升级到可用的最新版本。在pip的最新版本中。使用该标志,依赖项将不会升级,除非依赖项包的安装版本不再满足升级包的要求。通常情况下,pip将在其自身之后进行清理并删除生成目录的内容。唯一不这样做的情况是:
您使用了--no install
选项
您正在使用可编辑的包
安装被取消或以其他方式中断
在所有其他情况下,您不应该拥有阻塞您的环境的生成
目录。用于--upgrade
的快捷命令:
pip install Django --upgrade
是:
根据pip示例3:
pip install --upgrade django
但根据我的经验,使用这种方法也会升级任何与之相关的包。例如:
假设您想要升级需要Django>=1.2.4
的somepackage
,使用这种方法,它还将somepackage
和Django
升级到最新更新。为了安全起见,请执行以下操作:
# Assume you want to keep Django 1.2.4
pip install --upgrade somepackage django==1.2.4
这样做将升级somepackage
,并将Django保持在1.2.4版本。如果您只想升级一个名为somepackage
的特定软件包,则在pip的最新版本中应使用的命令是
pip install --upgrade --upgrade-strategy only-if-needed somepackage
当您在Django中开发一个应用程序时,这非常有用,该应用程序目前只能与特定版本的Django(比如Django=1.9.x)一起使用,并且希望使用bug fix/new功能升级某些依赖的包,并且升级的包依赖于Django(但是它可以与1.5之后的任何版本的Django一起使用)
pip install--upgrade django some package
的默认行为是将django升级到可用的最新版本,否则可能会破坏您的应用程序,尽管使用--仅在需要时升级策略,依赖的包现在只会在必要时升级。如果升级包,旧的将被卸载
一种方便的方法是使用它,它还更新所选软件包(或所有软件包)的requirements.txt
文件中的版本
安装
pip install pip-upgrader
用法
激活(很重要,因为它还将在当前virtualenv中安装升级包的新版本)
cd
放入项目目录,然后运行:
pip-upgrade
高级用法
如果需求放置在非标准位置,请将其作为参数发送:
pip-upgrade path/to/requirements.txt
pip-upgrade -p django -p celery -p dateutil
如果您已经知道要升级的软件包,只需将其作为参数发送:
pip-upgrade path/to/requirements.txt
pip-upgrade -p django -p celery -p dateutil
如果需要升级到发布前/发布后版本,请在命令中添加--prerelease
参数
完全披露:我写了这个包。这为我解决了这个问题:
pip install -I --upgrade psutil --force
之后,只需卸载带有新版本的psutil,然后您就可以突然安装旧版本(:我使用这个:
pip3 install -r requirements.txt
定义要升级的特定版本有助于我,而不仅仅是升级命令
pip3安装larapy安装程序==0.4.01-U
This for me更新了我所有打包的软件包,把一切都搞砸了!!!!文档说明:--将所有软件包升级到最新的可用版本。这是正确的还是我做错了什么?@OrbiterFleet我需要更新“请求”,所以我做了pip安装请求--升级
并且只升级“请求”已升级。说明中显示“升级所有指定的包”当我查看文档时。注意,它也会更新所有依赖项,可能会搞乱一切。最好的选择是卸载并重新安装包。要升级特定包,请使用pip install--upgrade django==1.4.0
根据问题或问题本身是错误的,这应该是正确答案。编辑exis如何ting answer是否添加此信息而不是(不完整的)答案?@a1an请建议您认为应该在“建议编辑”中添加哪些额外信息.Thanks我的意思是你可以编辑Joey给出的答案,添加你在上下文中提供的快捷方式选项。请检查@dr jimbob的答案,因为最新版本的pip实际上会升级你正在升级的包所依赖的所有其他依赖项。是否有一个选项可以一次升级所有包(即,不列出它们)使用这种方法?@MikePalmice yes:pip升级-p all
将升级您的所有软件包并用o更新需求文件