Manually remove Python package on Heroku

deployment, django, heroku, installation

Solution

I've had problems where Heroku caches broken packages and there's no way to get them out. The Python buildpack should have some kind of support for flushing this cache (CACHE_DIR), but it does not.

There is a workaround: follow these instructions to change your Python runtime to, for instance, 3.3.0 (it doesn't matter if your app actually supports Python 3 or not). Then change it back to the default. The act of changing your Python runtime and then deploying will force the buildpack to totally erase the cache. As far as I know this is the only practical way to erase the cache at the moment.

Problem

I was running `heroku push master`, and got this: ``` ----- Python app detected ----- No runtime.txt provided; assuming python-2.7.3. ----- Using Python runtime (python-2.7.3) ----- Installing dependencies using Pip (1.2.1) Downloading/unpacking Django-1.5c2 from https://www.djangoproject.com/download/1.5c2/tarball (from -r requirements.txt (line 1)) Cannot determine compression type for file /tmp/pip-rYIGHS-unpack/tarball.ksh Running setup.py egg_info for package Django-1.5c2 Installing collected packages: Django-1.5c2 Running setup.py install for Django-1.5c2 changing mode of build/scripts-2.7/django-admin.py from 600 to 755 changing mode of /app/.heroku/python/bin/django-admin.py to 755 ======== WARNING! ======== You have just installed Django over top of an existing installation, without removing it first. Because of this, your install may now include extraneous files from a previous version that have since been removed from Django. This is known to cause a variety of problems. You should manually remove the /app/.heroku/python/lib/python2.7/site-packages/django directory and re-install Django. Successfully installed Django-1.5c2 ``` How can I remove the previous Django package? UPDATE: My requirements.txt: ``` https://www.djangoproject.com/download/1.5c2/tarball/**#egg=django** South==0.7.6 argparse==1.2.1 distribute==0.6.24 dj-database-url==0.2.1 psycopg2==2.4.6 wsgiref==0.1.2 PIL==1.1.7 ``` The text in bold fixed the above warning. UPDATE 2: Since Django 1.5 was officially released, I just used pip freeze: ``` Django==1.5 South==0.7.6 argparse==1.2.1 distribute==0.6.24 dj-database-url==0.2.1 psycopg2==2.4.6 wsgiref==0.1.2 PIL==1.1.7 ```

Original source