2013-06-05 10 views
5

Próbuję przenieść moją aplikację Python3 do Heroku. Używa ona gevent, która ma zależność Cython. Kiedy próbuję przekierować do Heroku, pojawia się następujący błąd:Heroku: sh: cython: nie znaleziono

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 

Jak mogę to naprawić?

Odpowiedz

6

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

... więc prawdopodobnie będziesz mieć do nich e-mail, aby uzyskać gevent i/lub cython wsparcie.

+0

Złożyłem już zgłoszenie do pomocy technicznej. Zaktualizuję ten problem, gdy/jeśli otrzymam odpowiedź. – zakdances

+1

FYI - to działało dla mnie: 'git + git: // github.com/zwopple/heroku-gevent.git' – Jonathan

+1

@yourfriendzak Jakieś aktualizacje? Jestem zainteresowany instalacją rozwidlonej wersji gevent, ale mam te same problemy z instalacją na Heroku. – BillyBBone

1

Musiałem wdrożyć do heroku niestandardową gałąź gevent (z poprawkami do zgodności z CPython 2.7.9 dla klienta TLS), która wymaga budowania cythonu. My requirements.txt obejmowały między innymi:

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 

mam sh: cython: not found próbuje budować gevent.

Sposobem na to, aby wdrożyć Heroku jest za pomocą dwóch zobowiązuje:

  1. pierwsze uruchomienie aplikacji, która używa Cython ale nie wykorzystuje niestandardową wersję gevent. Spowoduje to zainstalowanie Cythona.
  2. Następnie należy wdrożyć działającą wersję aplikacji korzystającej z niestandardowej gałęzi gevent. To będzie dobrze, ponieważ Cython jest już zainstalowany.
+0

Przyszedłem tutaj, ponieważ ten sam błąd występuje, gdy próbujesz zainstalować wtyczkę (https://blog.rstudio.org/2016/03/29/feather/). Działa to również w tym celu. – bjw

Powiązane problemy