2013-02-23 5 views
7

stavo correndo heroku push master, e ottenuto questo:rimuovere manualmente il pacchetto Python su Heroku

----- 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 

Come posso rimuovere il precedente pacchetto di Django?

UPDATE: mio 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 

Il testo in grassetto fissa l'avviso di cui sopra.

UPDATE 2: Dal Django 1.5 è stato ufficialmente rilasciato, ho solo usato freeze pip:

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 
+0

Come viene specificato Django nel tuo 'requirements.txt'? Stai dicendo di usare una versione particolare? – culix

+0

Si prega di consultare l'aggiornamento sopra. – blaze

+0

@metroxylon Controlla cosa succede con il tuo banco di prova quando apporti le modifiche 'heroku logs -t'. Prova a eliminare 'Django == 1.5' da requisito, commit, push su heroku, quindi aggiungi e commit con django. – nk9

risposta

14

Ho avuto problemi in cui Heroku memorizza nella cache i pacchetti rotti e non c'è modo per farli fuori. Il buildpack Python dovrebbe avere un qualche tipo di supporto per lo svuotamento di questa cache (CACHE_DIR), ma non lo fa.

C'è una soluzione: seguire these instructions per modificare il runtime di Python in, per esempio, 3.3.0 (non importa se la tua app supporta effettivamente Python 3 o no). Quindi cambiare di nuovo al valore predefinito. L'atto di modificare il runtime di Python e quindi la distribuzione costringerà il buildpack a cancellare completamente la cache. Per quanto ne so, questo è l'unico modo pratico per cancellare la cache al momento.

+1

Questo ha risolto il problema per me. Ho provato a eseguire manualmente "heroku run pip uninstall my_package' che" ha funzionato "(non ha avuto esito negativo) ma il pacchetto era ancora nel sistema e mi causava problemi. Grazie per il consiglio! – Micah

+0

Non funziona più. –

+0

Sì, funziona ancora oggi. Cambiando (o aggiungendo per la prima volta) runtime.txt e poi re-deployando, Heroku crea un nuovo ambiente di runtime, distruggendo efficacemente qualsiasi problema legacy come il rifiuto di sovrascrivere i pacchetti precedentemente installati da PYPI con una versione diversa dello stesso pacchetto da un urit di github. –

0

attuale spinta virtenv pacchetto di file

pip freeze > requirements.txt 

Commit

git commit -am 'update packages' 

E push to heroku

git push heroku 

E herocu ricostruzione dell'ambiente

Counting objects: 13, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (11/11), done. 
Writing objects: 100% (13/13), 1.26 KiB, done. 
Total 13 (delta 3), reused 0 (delta 0) 
-----> Python app detected 
-----> No runtime.txt provided; assuming python-2.7.3. 
-----> Preparing Python runtime (python-2.7.3) 
-----> Installing Distribute (0.6.34) 
-----> Installing Pip (1.2.1) 
-----> Installing dependencies using Pip (1.2.1) 
Downloading/unpacking Flask==0.9 (from -r requirements.txt (line 1)) 
Running setup.py egg_info for package Flask 
+0

Questo è quello che ho fatto io (ad eccezione dell'uovo esterno). Aggiornerà con i miei requisiti.txt – blaze