2013-06-05 10 views
5

私はPython3アプリをHerokuにプッシュしようとしています。これは、Cythonの依存関係を持つgeventを使用します。私がHerokuにプッシュしようとすると、私はこのエラーを受け取ります:Heroku:sh:cython:not found

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 

どうすればこの問題を解決できますか?

答えて

6

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.

から...そう、あなたはおそらく、彼らはgeventおよび/またはcythonサポートを受けるに電子メールする必要があります。

+0

私はすでにサポートチケットを申請しています。私が/を受け取ったときにこの問題を更新します。 – zakdances

+1

FYI - これは私のために働いた: 'git + git:// github.com/zwopple/heroku-gevent.git' – Jonathan

+1

@yourfriendzak私はgeventのforkしたバージョンをインストールすることに興味がありますが、Herokuで同じインストール上の問題があります。 – BillyBBone

1

cyrootをビルドする必要があるgeventのカスタムブランチ(TLSクライアント用のCPython 2.7.9との互換性に関する修正あり)をherokuにデプロイする必要がありました。 私requirements.txtは、とりわけ、含ま:

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 

を私はgeventを構築しようとしているsh: cython: not foundを得ました。

  1. まずCythonを使用していますが、geventのカスタムバージョンを使用していないアプリケーションをデプロイします

    Herokuのにこれを導入する方法は2つのコミットを使用することです。これにより、Cythonがインストールされます。

  2. 次に、geventのカスタムブランチを使用するアプリケーションの作業用バージョンをデプロイします。これは、Cythonが既にインストールされているのでうまく構築されます。
+0

フェザー形式(https://blog.rstudio.org/2016/03/29/feather/)をインストールしてインストールするときに同じエラーが発生するため、ここに来ました。これはそれでも機能します。 – bjw