I'm using pip with a requirements file, in a virtualenv, for my Django projects. I'm trying to upgrade some packages, notably Django itself, and I'm getting an error about source code conflicts:
Source in
That's after updating the version number of Django from 1.2.3 to 1.2.4 in my requirements file. I'm using this command to actually do the upgrade:
pip --install --upgrade -E `<virtualenv dir`> --requirement `<requirements file`>
I can't find any flag that triggers a total package re-download. I even tried running an uninstall command first, and then the install, but no dice. Am I missing something?
Django
backend and Angular
frontend, should the requirements.txt
file be in the root directory (and run there with py -m pip install -r requirements.txt
) or should it be in the backend folder where files such as manage.py
are located?
I ran the following command and it upgraded from 1.2.3 to 1.4.0
pip install Django --upgrade
Shortcut for upgrade:
pip install Django -U
Note: if the package you are upgrading has any requirements this command will additionally upgrade all the requirements to the latest versions available. In recent versions of pip, you can prevent this behavior by specifying --upgrade-strategy only-if-needed
. With that flag, dependencies will not be upgraded unless the installed versions of the dependent packages no longer satisfy the requirements of the upgraded package.
First make sure you have checked the most voted answer.
I'm not sure if it's exactly your problem, but in my case, I wasn't able to upgrade Django to 1.2.4 - I was always finishing with 1.2.3 version, so I uninstalled Django with:
<virtualenv>/bin/pip uninstall Django
Then I removed <virtualenv>/build/Django
directory and finally I installed the proper version with:
<virtualenv>/bin/pip install Django
pip install Django -U
or pip install Django --upgrade
as described in @JoeyG 's answer.
According to pip documentation example 3:
pip install --upgrade django
But based on my experience, using this method will also upgrade any package related to it. Example:
Assume you want to upgrade somepackage
that require Django >= 1.2.4
using this kind of method it will also upgrade somepackage
and django
to the newest update. Just to be safe, do:
# Assume you want to keep Django 1.2.4
pip install --upgrade somepackage django==1.2.4
Doing this will upgrade somepackage
and keeping Django to the 1.2.4 version.
django
as a main package then in the example you use somepackage
and then use django
as a dependency.
pip install --upgrade django==1.2.4
without the "somepackage"
The shortcut command for --upgrade
:
pip install Django --upgrade
Is:
pip install Django -U
If you only want to upgrade one specific package called somepackage
, the command you should use in recent versions of pip is
pip install --upgrade --upgrade-strategy only-if-needed somepackage
This is very useful when you develop an application in Django that currently will only work with a specific version of Django (say Django=1.9.x) and want to upgrade some dependent package with a bug-fix/new feature and the upgraded package depends on Django (but it works with, say, any version of Django after 1.5).
The default behavior of pip install --upgrade django-some-package
would be to upgrade Django to the latest version available which could otherwise break your application, though with the --upgrade-strategy only-if-needed
dependent packages will now only be upgraded as necessary.
If you upgrade a package, the old one will be uninstalled.
A convenient way to do this is to use this pip-upgrader which also updates the versions in your requirements.txt
file for the chosen packages (or all packages).
Installation
pip install pip-upgrader
Usage
Activate your virtualenv (important, because it will also install the new versions of upgraded packages in current virtualenv).
cd
into your project directory, and then run:
pip-upgrade
Advanced usage
If the requirements are placed in a non-standard location, send them as arguments:
pip-upgrade path/to/requirements.txt
If you already know what package you want to upgrade, simply send them as arguments:
pip-upgrade -p django -p celery -p dateutil
If you need to upgrade to pre-release / post-release version, add --prerelease
argument to your command.
Full disclosure: I wrote this package.
pip-upgrade -p all
will upgrade all your packages and update requirements file without needing any input from you.
This solved the issue for me:
pip install -I --upgrade psutil --force
Afterwards just uninstall psutil with the new version and hop you can suddenly install the older version (:
Defining a specific version to upgrade helped me instead of only the upgrade command.
pip3 install larapy-installer==0.4.01 -U
Normally, pip will clean up after itself and remove the contents of the build directory. The only time it doesn't do this is if:
You used the --no-install option You are using editable packages The installation was cancelled or was otherwise interrupted.
In all other cases, you shouldn't have build
directory that's clogging your environment.
I use this:
pip3 install -r requirements.txt
Success story sharing
pip install Requests --upgrade
and only "requests" was upgraded. The description says "upgrade all specified packages" when I view the docs.pip install --upgrade django==1.4.0