2013-06-05 19 views
5

Sto provando a spingere la mia app Python3 su Heroku. Utilizza gevent che ha una dipendenza Cython. Quando provo a inviare a Heroku, ottengo questo errore:Heroku: sh: cython: non trovato

Running cython -o gevent.core.c gevent/core.pyx # !EV_USE_SIGNALFD && !defined(LIBEV_EMBED) && !defined(_WIN32) 

    sh: cython: not found 

    Traceback (most recent call last): 

    File "util/cythonpp.py", line 801, in <module> 

     process_filename(filename, options.output_file) 

    File "util/cythonpp.py", line 85, in process_filename 

     output = run_cython(pyx_filename, sourcehash, output_filename, banner, comment) 

    File "util/cythonpp.py", line 529, in run_cython 

     system(command, comment) 

    File "util/cythonpp.py", line 539, in system 

     raise AssertionError('%r failed with code %s' % (command, result)) 

    AssertionError: 'cython -o gevent.core.c gevent/core.pyx' failed with code 32512 

    make: *** [gevent/gevent.core.c] Error 1 

    ---------------------------------------- 
    Command /app/.heroku/python/bin/python -c "import setuptools; __file__='/app/.heroku/src/gevent/setup.py'; exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps failed with error code 1 in /app/.heroku/src/gevent 
    Storing complete log in /app/.pip/pip.log 

!  Push rejected, failed to compile Python app 

Come posso risolvere questo?

risposta

6

Dal Heroku FAQ ...

Can I require modules with C extensions?

Yes. If the module will install properly with pip. Most libraries that are required for web applications are available at build time.

However, sometimes a shared library needed for a module isn’t available. If this becomes a problem for you, you should contact [email protected] for help.

... quindi probabilmente dovrete a loro e-mail per ottenere gevent e/o cython supporto.

+0

Ho già registrato un ticket di supporto con loro. Aggiornerò questo problema quando/se avrò una risposta. – zakdances

+1

FYI - questo ha funzionato per me: 'git + git: // github.com/zwopple/heroku-gevent.git' – Jonathan

+1

@yourfriendzak Qualche aggiornamento? Sono interessato all'installazione di una versione biforcuta di gevent, ma sto avendo gli stessi problemi di installazione su Heroku. – BillyBBone

1

Avevo bisogno di distribuire su heroku un ramo personalizzato di gevent (con correzioni alla compatibilità con CPython 2.7.9 per client TLS) che richiede la creazione di cython. mio requirements.txt incluso, tra le altre cose:

Cython==0.22 
-e git+https://github.com/zeevt/[email protected]#egg=gevent 
grequests==0.2.0 
gunicorn==19.3.0 
requests==2.6.0 

ho ottenuto un sh: cython: not found cercando di costruire gevent.

Il modo per distribuire questo a Heroku è quello di utilizzare due commit:

  1. Prima distribuire un app che utilizza Cython ma non utilizza una versione personalizzata di gevent. Questo farà sì che Cython venga installato.
  2. Quindi distribuire la versione di lavoro dell'app che utilizza un ramo personalizzato di gevent. Questo andrà bene perché Cython è già installato.
+0

Sono venuto qui perché lo stesso errore si verifica quando si tenta di installare il formato feather (https://blog.rstudio.org/2016/03/29/feather/). Funziona anche per quello. – bjw

Problemi correlati