user8910924
user8910924

Reputation:

Why won't pip install django 2.x?

Pip will not let me install django 2.0.7. When I execute sudo -H pip install Django==2.0.7 it says:

Could not find a version that satisfies the requirement Django==2.0.7 (from versions: 1.1.3, 1.1.4, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.7, 1.3, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7, 1.4.8, 1.4.9, 1.4.10, 1.4.11, 1.4.12, 1.4.13, 1.4.14, 1.4.15, 1.4.16, 1.4.17, 1.4.18, 1.4.19, 1.4.20, 1.4.21, 1.4.22, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7, 1.5.8, 1.5.9, 1.5.10, 1.5.11, 1.5.12, 1.6, 1.6.1, 1.6.2, 1.6.3, 1.6.4, 1.6.5, 1.6.6, 1.6.7, 1.6.8, 1.6.9, 1.6.10, 1.6.11, 1.7, 1.7.1, 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 1.7.7, 1.7.8, 1.7.9, 1.7.10, 1.7.11, 1.8a1, 1.8b1, 1.8b2, 1.8rc1, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.8.10, 1.8.11, 1.8.12, 1.8.13, 1.8.14, 1.8.15, 1.8.16, 1.8.17, 1.8.18, 1.8.19, 1.9a1, 1.9b1, 1.9rc1, 1.9rc2, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.9.5, 1.9.6, 1.9.7, 1.9.8, 1.9.9, 1.9.10, 1.9.11, 1.9.12, 1.9.13, 1.10a1, 1.10b1, 1.10rc1, 1.10, 1.10.1, 1.10.2, 1.10.3, 1.10.4, 1.10.5, 1.10.6, 1.10.7, 1.10.8, 1.11a1, 1.11b1, 1.11rc1, 1.11, 1.11.1, 1.11.2, 1.11.3, 1.11.4, 1.11.5, 1.11.6, 1.11.7, 1.11.8, 1.11.9, 1.11.10, 1.11.11, 1.11.12, 1.11.13, 1.11.14)

No matching distribution found for Django==2.0.7

As you can see above, the most recent version it can find is version 1.11.14. Normally, I would be okay with downloading that but it is not compatible with Python 3.7 (the version I have). I have also checked to make sure pip was updated to the latest version (pip 10.0.1).

Upvotes: 3

Views: 5276

Answers (3)

Arindam Roychowdhury
Arindam Roychowdhury

Reputation: 6511

Adding to above answers, if you are using a virtual environment, make sure you are using Python3 to create it. You can explicitly do that like this :

virtualenv -p C:\Python36\python3.exe VE_Project

Activate the env . Now if you do a "pip install Django" , it will install the latest in 2.x series.

Upvotes: 0

Xantium
Xantium

Reputation: 11603

Mac and Linux (and similar systems) both contain default installations (generally Python 2.7). This is accessed via python in terminal.

pip if installed will also be for Python 2.7 (or whatever it is on your system).

When you run sudo -H pip install Django==2.0.7 it points to the 2.7 installation (or your equivalent).

You can test this via the which pip command, which will show in the path where it is installing to.

As mentioned in the other answer, Django lost support for 2.7 with version 1.11.14 so you cannot install the version 2 Django since it has no support (this is your error) for Python 2.

Now to deal with the problem:

To install Django you just need to tell the terminal which interpreter to use. As mentioned you could use pip37 or I prefer to use:

python37 -m pip install Django

Simply because I use python37 command all the time so I know it will work, and will therefore install to the correct location.


Note that since you are installing Django you should probably be using a separate environment for security (venv or virtualenv).

The sudo should not be used only as an absolute last resort (as already mentioned by abccd) as it can ruin your system (I have done this multiple times in a Virtual Installation, so it is definitly something you want to avoid if possible), once again using a virtual environment would ensure that you do not need the sudo command since you are not installing in a root dictionary.

Upvotes: 4

Taku
Taku

Reputation: 33734

As Simon has mentioned in the comments: your sudo -H pip is installing for Python 2.7, which explains why the latest version for Django is 1.11.14 since Django 2.x dropped support for Python 2.7.

You'll need to use Python 3.7's pip, run either one of the following:

pip3 install --user django
python37 install --user django
python3 install --user django 
pip37 install --user django 

You REALLY shouldn't use pip with sudo (it's not safe).

Upvotes: 2

Related Questions