2013-06-05 49 views
5

Tôi đang cố gắng đẩy ứng dụng Python3 của mình lên Heroku. Nó sử dụng gevent có phụ thuộc Cython. Khi tôi cố gắng đẩy tới Heroku, tôi gặp lỗi này:Heroku: sh: cython: không tìm thấy

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 

Làm cách nào để khắc phục sự cố này?

Trả lời

6

Từ 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.

... do đó, có thể bạn sẽ phải e-mail cho họ để có được gevent và/hoặc cython hỗ trợ.

+0

Tôi đã gửi một vé hỗ trợ cho họ. Tôi sẽ cập nhật vấn đề này khi/nếu tôi nhận được phản hồi. – zakdances

+1

FYI - điều này có tác dụng đối với tôi: 'git + git: // github.com/zwopple/heroku-gevent.git' – Jonathan

+1

@yourfriendzak Mọi cập nhật? Tôi quan tâm đến việc cài đặt một phiên bản chia tay của gevent, nhưng có vấn đề cài đặt tương tự trên Heroku. – BillyBBone

1

Tôi cần triển khai cho heroku một nhánh tùy chỉnh của gevent (với các bản sửa lỗi tương thích với CPython 2.7.9 dành cho máy khách TLS) yêu cầu cython xây dựng. requirements.txt bao gồm Mỹ, trong số những thứ khác:

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 

tôi nhận được một sh: cython: not found cố gắng xây dựng gevent.

Cách triển khai này để Heroku là bằng cách sử dụng hai cam kết:

  1. Đầu tiên triển khai một ứng dụng mà sử dụng Cython nhưng không sử dụng một phiên bản tùy chỉnh của gevent. Điều này sẽ làm cho Cython được cài đặt.
  2. Sau đó triển khai phiên bản làm việc của ứng dụng sử dụng nhánh tùy chỉnh của gevent. Điều này sẽ xây dựng tốt vì Cython đã được cài đặt.
+0

Tôi đến đây vì lỗi tương tự xảy ra khi bạn thử cài đặt định dạng lông (https://blog.rstudio.org/2016/03/29/feather/). Điều này cũng làm việc cho điều đó. – bjw