我在我的 Django 项目中使用 pip 和一个 virtualenv 中的需求文件。我正在尝试升级一些软件包,尤其是 Django 本身,并且我收到有关源代码冲突的错误:
那是在我的需求文件中将 Django 的版本号从 1.2.3 更新到 1.2.4 之后。我正在使用这个命令来实际进行升级:
pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>
我找不到任何触发总包重新下载的标志。我什至尝试先运行卸载命令,然后安装,但没有骰子。我错过了什么吗?
Django
后端和 Angular
前端的应用程序中,requirements.txt
文件应位于根目录中(并与 py -m pip install -r requirements.txt
一起运行)还是应位于后端文件夹中,其中包含 {5 } 位于?
我运行了以下命令,它从 1.2.3 升级到 1.4.0
pip install Django --upgrade
升级快捷键:
pip install Django -U
注意:如果您要升级的软件包有任何要求,此命令会将所有要求额外升级到可用的最新版本。在最新版本的 pip 中,you can prevent this behavior by specifying --upgrade-strategy only-if-needed
。使用该标志,除非依赖包的已安装版本不再满足升级包的要求,否则将不会升级依赖项。
首先确保您已选中 the most voted answer。
我不确定这是否正是你的问题,但就我而言,我无法将 Django 升级到 1.2.4 - 我总是使用 1.2.3 版本完成,所以我卸载了 Django:
<virtualenv>/bin/pip uninstall Django
然后我删除了 <virtualenv>/build/Django
目录,最后我安装了正确的版本:
<virtualenv>/bin/pip install Django
pip install Django -U
或 pip install Django --upgrade
。
根据 pip documentation 示例 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 版本。
django
作为主包开始,然后在示例中使用 somepackage
,然后使用 django
作为依赖项。
pip install --upgrade django==1.2.4
没有“somepackage”
--upgrade
的快捷命令:
pip install Django --upgrade
是:
pip install Django -U
如果您只想升级一个名为 somepackage
的特定软件包,您应该在最新版本的 pip 中使用的命令是
pip install --upgrade --upgrade-strategy only-if-needed somepackage
当您在 Django 中开发当前仅适用于特定版本的 Django(例如 Django=1.9.x)并且想要升级一些具有错误修复/新功能的依赖包并且升级的包依赖的应用程序时,这非常有用在 Django 上(但它适用于 1.5 之后的任何版本的 Django)。
pip install --upgrade django-some-package
的默认行为是将 Django 升级到可用的最新版本,否则可能会破坏您的应用程序,但使用 --upgrade-strategy only-if-needed
的依赖包现在只会在必要时升级。
如果你升级一个包,旧的将被卸载。
一种方便的方法是使用此 pip-upgrader,它还会更新您的 requirements.txt
文件中所选软件包(或所有软件包)的版本。
安装
pip install pip-upgrader
用法
激活您的 virtualenv(很重要,因为它还会在当前 virtualenv 中安装新版本的升级包)。
cd
进入您的项目目录,然后运行:
pip-upgrade
高级用法
如果需求放置在非标准位置,请将它们作为参数发送:
pip-upgrade path/to/requirements.txt
如果您已经知道要升级的软件包,只需将它们作为参数发送:
pip-upgrade -p django -p celery -p dateutil
如果您需要升级到预发布/发布后版本,请在命令中添加 --prerelease
参数。
完全披露:我写了这个包。
pip-upgrade -p all
将升级您的所有软件包并更新需求文件,而无需您的任何输入。
这为我解决了这个问题:
pip install -I --upgrade psutil --force
之后只需使用新版本卸载 psutil 并跳你可以突然安装旧版本(:
定义要升级的特定版本对我有帮助,而不仅仅是升级命令。
pip3 install larapy-installer==0.4.01 -U
通常,pip 会自行清理并删除构建目录的内容。唯一不这样做的情况是:
您使用了 --no-install 选项 您正在使用可编辑的软件包 安装被取消或以其他方式中断。
在所有其他情况下,您不应该有阻塞您的环境的 build
目录。
我用这个:
pip3 install -r requirements.txt
pip install Requests --upgrade
,仅“请求”被升级了。当我查看文档时,描述说“升级所有 specified 包”。pip install --upgrade django==1.4.0