Heroku:sh:cython:未找到

5

我正在尝试将我的Python3应用程序推送到Heroku。它使用gevent,这需要一个Cython依赖项。当我尝试推送到Heroku时,我会收到以下错误:

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

我该如何解决这个问题?
2个回答

6
Heroku FAQ中得知...

我能够要求带有C扩展的模块吗?

可以。如果使用pip安装模块,则大多数用于Web应用程序的库在构建时都是可用的。

但是,有时会需要一个共享库来支持某个模块,而该共享库可能无法使用。如果遇到这种问题,请联系support@heroku.com以获取帮助。

...因此您可能需要通过电子邮件联系他们以获得gevent和/或cython支持。


我已经向他们提交了支持工单。如果我收到回复,我会更新此问题。 - zakdances
1
FYI -- 这对我有效:git+git://github.com/zwopple/heroku-gevent.git - Jonathan
1
@yourfriendzak 有更新吗?我想安装一个分支版本的gevent,但在Heroku上遇到了相同的安装问题。 - BillyBBone

2

我需要在Heroku上部署一个自定义的gevent分支(修复了与CPython 2.7.9 TLS客户端兼容性问题),需要使用cython进行构建。

我的requirements.txt文件包含以下内容:

Cython==0.22
-e git+https://github.com/zeevt/gevent.git@issue477#egg=gevent
grequests==0.2.0
gunicorn==19.3.0
requests==2.6.0

我在构建gevent时遇到了sh: cython: not found的问题。

将其部署到Heroku的方法是使用两个提交:

  1. 首先部署一个使用Cython但不使用自定义版本gevent的应用程序。这将导致Cython被安装。
  2. 然后部署使用自定义分支gevent的工作版本的应用程序。这将成功构建,因为Cython已经安装。

我来这里是因为在尝试安装feather-format(https://blog.rstudio.org/2016/03/29/feather/)时出现了相同的错误。这对那个也适用。 - bjw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接