Search code examples
pythonherokupython-3.xcythongevent

Heroku: sh: cython: not found


I'm trying to push my Python3 app to Heroku. It uses gevent which has a Cython dependency. When I try to push to Heroku, I get this error:

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

How can I fix this?


Solution

  • From the 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 support@heroku.com for help.

    ...so you'll probably have to e-mail them to get gevent and/or cython support.