私は、HerokuにPythonモジュールを配備する際に問題があります。 これはpython2に基づいています。PythonモジュールをHerokuにデプロイしますか?
requirements.txtファイル:私はトラブルのアップロードを抱えている
Flask==0.11.1
Jinja2==2.8
MarkupSafe==0.23
Werkzeug==0.11.10
click==6.6
gunicorn==19.6.0
itsdangerous==0.24
requests==2.10.0
wsgiref==0.1.2
konlpy==0.4.4
gensim==2.1.0
モジュールはkonlpyとgensimです。 仮想環境にすべてのモジュールをインストール済みです。私はgensim(konlpyではなく)用のビルドパックも設定しました。
エラー・ログには、次のとおりです。私は何をしようとしている
2017-06-10T08:56:17.851884+00:00 app[web.1]: [2017-06-10 08:56:17 +0000] [4] [INFO] Shutting down: Master
2017-06-10T08:56:17.851975+00:00 app[web.1]: [2017-06-10 08:56:17 +0000] [4] [INFO] Reason: Worker failed to boot.
2017-06-10T08:56:17.946195+00:00 heroku[web.1]: State changed from starting to crashed
2017-06-10T08:56:17.936020+00:00 heroku[web.1]: Process exited with status 3
2017-06-10T08:56:55.589601+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/" host=afternoon-beach-22534.herokuapp.com request_id=8e14e22a-b473-4aa8-959e-c26a80f8775e fwd="69.63.188.105" dyno= connect= service= status=503 bytes= protocol=https
2017-06-10T08:58:15.541365+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/" host=afternoon-beach-22534.herokuapp.com request_id=1bd4f45b-1db6-4e24-be10-28b0b62b7c40 fwd="173.252.124.202" dyno= connect= service= status=503 bytes= protocol=https
2017-06-10T08:59:04.103999+00:00 heroku[web.1]: State changed from crashed to starting
2017-06-10T08:59:19.881438+00:00 heroku[web.1]: Starting process with command `gunicorn app:app --log-file=-`
2017-06-10T08:59:23.010876+00:00 app[web.1]: [2017-06-10 08:59:23 +0000] [4] [INFO] Starting gunicorn 19.6.0
2017-06-10T08:59:23.012294+00:00 app[web.1]: [2017-06-10 08:59:23 +0000] [4] [INFO] Using worker: sync
2017-06-10T08:59:23.020541+00:00 app[web.1]: [2017-06-10 08:59:23 +0000] [9] [INFO] Booting worker with pid: 9
2017-06-10T08:59:23.089805+00:00 app[web.1]: [2017-06-10 08:59:23 +0000] [11] [INFO] Booting worker with pid: 11
2017-06-10T08:59:23.011687+00:00 app[web.1]: [2017-06-10 08:59:23 +0000] [4] [INFO] Listening at: http://0.0.0.0:42198 (4)
2017-06-10T08:59:23.730044+00:00 heroku[web.1]: Process exited with status 1
2017-06-10T08:59:23.520921+00:00 app[web.1]: [2017-06-10 08:59:23 +0000] [11] [ERROR] Exception in worker process
2017-06-10T08:59:23.520934+00:00 app[web.1]: Traceback (most recent call last):
2017-06-10T08:59:23.520936+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
2017-06-10T08:59:23.520936+00:00 app[web.1]: worker.init_process()
2017-06-10T08:59:23.520937+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 126, in init_process
2017-06-10T08:59:23.520938+00:00 app[web.1]: self.load_wsgi()
2017-06-10T08:59:23.520938+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
2017-06-10T08:59:23.520939+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2017-06-10T08:59:23.520940+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
2017-06-10T08:59:23.520941+00:00 app[web.1]: self.callable = self.load()
2017-06-10T08:59:23.520941+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2017-06-10T08:59:23.520942+00:00 app[web.1]: return self.load_wsgiapp()
2017-06-10T08:59:23.520942+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2017-06-10T08:59:23.520943+00:00 app[web.1]: return util.import_app(self.app_uri)
2017-06-10T08:59:23.520944+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 357, in import_app
2017-06-10T08:59:23.520944+00:00 app[web.1]: __import__(module)
2017-06-10T08:59:23.520945+00:00 app[web.1]: File "/app/app.py", line 8, in <module>
2017-06-10T08:59:23.520946+00:00 app[web.1]: from konlpy.tag import Twitter; t = Twitter()
2017-06-10T08:59:23.520947+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/konlpy/tag/_twitter.py", line 72, in __init__
2017-06-10T08:59:23.520947+00:00 app[web.1]: jvm.init_jvm(jvmpath)
2017-06-10T08:59:23.520948+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/konlpy/jvm.py", line 40, in init_jvm
2017-06-10T08:59:23.520949+00:00 app[web.1]: jvmpath = jvmpath or jpype.getDefaultJVMPath()
2017-06-10T08:59:23.520949+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/jpype/_core.py", line 114, in get_default_jvm_path
2017-06-10T08:59:23.520950+00:00 app[web.1]: return finder.get_jvm_path()
2017-06-10T08:59:23.520951+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/jpype/_jvmfinder.py", line 121, in get_jvm_path
2017-06-10T08:59:23.520951+00:00 app[web.1]: jvm = method()
2017-06-10T08:59:23.520952+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/jpype/_jvmfinder.py", line 164, in _get_from_known_locations
2017-06-10T08:59:23.520953+00:00 app[web.1]: for home in self.find_possible_homes(self._locations):
2017-06-10T08:59:23.520954+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/jpype/_jvmfinder.py", line 95, in find_possible_homes
2017-06-10T08:59:23.520954+00:00 app[web.1]: for childname in sorted(os.listdir(parent)):
2017-06-10T08:59:23.520955+00:00 app[web.1]: OSError: [Errno 2] No such file or directory: '/usr/lib/jvm'
2017-06-10T08:59:23.520962+00:00 app[web.1]: [2017-06-10 08:59:23 +0000] [9] [ERROR] Exception in worker process
2017-06-10T08:59:23.520962+00:00 app[web.1]: Traceback (most recent call last):
2017-06-10T08:59:23.520963+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
2017-06-10T08:59:23.520964+00:00 app[web.1]: worker.init_process()
2017-06-10T08:59:23.520964+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 126, in init_process
2017-06-10T08:59:23.520965+00:00 app[web.1]: self.load_wsgi()
2017-06-10T08:59:23.520966+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
2017-06-10T08:59:23.520966+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2017-06-10T08:59:23.520967+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
2017-06-10T08:59:23.520967+00:00 app[web.1]: self.callable = self.load()
2017-06-10T08:59:23.520968+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
2017-06-10T08:59:23.520969+00:00 app[web.1]: return self.load_wsgiapp()
2017-06-10T08:59:23.520969+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
2017-06-10T08:59:23.520970+00:00 app[web.1]: return util.import_app(self.app_uri)
2017-06-10T08:59:23.520970+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 357, in import_app
2017-06-10T08:59:23.520971+00:00 app[web.1]: __import__(module)
2017-06-10T08:59:23.520972+00:00 app[web.1]: File "/app/app.py", line 8, in <module>
2017-06-10T08:59:23.520972+00:00 app[web.1]: from konlpy.tag import Twitter; t = Twitter()
2017-06-10T08:59:23.520973+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/konlpy/tag/_twitter.py", line 72, in __init__
2017-06-10T08:59:23.520974+00:00 app[web.1]: jvm.init_jvm(jvmpath)
2017-06-10T08:59:23.520974+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/konlpy/jvm.py", line 40, in init_jvm
2017-06-10T08:59:23.520975+00:00 app[web.1]: jvmpath = jvmpath or jpype.getDefaultJVMPath()
2017-06-10T08:59:23.520976+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/jpype/_core.py", line 114, in get_default_jvm_path
2017-06-10T08:59:23.520977+00:00 app[web.1]: return finder.get_jvm_path()
2017-06-10T08:59:23.520977+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/jpype/_jvmfinder.py", line 121, in get_jvm_path
2017-06-10T08:59:23.520978+00:00 app[web.1]: jvm = method()
2017-06-10T08:59:23.520979+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/jpype/_jvmfinder.py", line 164, in _get_from_known_locations
2017-06-10T08:59:23.520979+00:00 app[web.1]: for home in self.find_possible_homes(self._locations):
2017-06-10T08:59:23.520980+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/jpype/_jvmfinder.py", line 95, in find_possible_homes
2017-06-10T08:59:23.520981+00:00 app[web.1]: for childname in sorted(os.listdir(parent)):
2017-06-10T08:59:23.520981+00:00 app[web.1]: OSError: [Errno 2] No such file or directory: '/usr/lib/jvm'
2017-06-10T08:59:23.521316+00:00 app[web.1]: [2017-06-10 08:59:23 +0000] [9] [INFO] Worker exiting (pid: 9)
2017-06-10T08:59:23.521493+00:00 app[web.1]: [2017-06-10 08:59:23 +0000] [11] [INFO] Worker exiting (pid: 11)
2017-06-10T08:59:23.552400+00:00 app[web.1]: Traceback (most recent call last):
2017-06-10T08:59:23.552442+00:00 app[web.1]: File "/app/.heroku/python/bin/gunicorn", line 11, in <module>
2017-06-10T08:59:23.552493+00:00 app[web.1]: sys.exit(run())
2017-06-10T08:59:23.552512+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 74, in run
2017-06-10T08:59:23.552559+00:00 app[web.1]: WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
2017-06-10T08:59:23.552605+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 192, in run
2017-06-10T08:59:23.552667+00:00 app[web.1]: super(Application, self).run()
2017-06-10T08:59:23.552685+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/app/base.py", line 72, in run
2017-06-10T08:59:23.552727+00:00 app[web.1]: Arbiter(self).run()
2017-06-10T08:59:23.552769+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 218, in run
2017-06-10T08:59:23.552834+00:00 app[web.1]: self.halt(reason=inst.reason, exit_status=inst.exit_status)
2017-06-10T08:59:23.552851+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 331, in halt
2017-06-10T08:59:23.552954+00:00 app[web.1]: self.stop()
2017-06-10T08:59:23.552972+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 381, in stop
2017-06-10T08:59:23.553058+00:00 app[web.1]: time.sleep(0.1)
2017-06-10T08:59:23.553101+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 231, in handle_chld
2017-06-10T08:59:23.553166+00:00 app[web.1]: self.reap_workers()
2017-06-10T08:59:23.553182+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/arbiter.py", line 506, in reap_workers
2017-06-10T08:59:23.553314+00:00 app[web.1]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
2017-06-10T08:59:23.553400+00:00 app[web.1]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
2017-06-10T08:59:23.748346+00:00 heroku[web.1]: State changed from starting to crashed
2017-06-10T08:59:36.316423+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/" host=afternoon-beach-22534.herokuapp.com request_id=e7341e48-6af5-4d10-8d6d-4a485fdda85c fwd="173.252.124.218" dyno= connect= service= status=503 bytes= protocol=https
2017-06-10T08:59:53.796217+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=afternoon-beach-22534.herokuapp.com request_id=898717bb-1ce1-4c36-97ef-fa844585effb fwd="59.18.254.244" dyno= connect= service= status=503 bytes= protocol=https
はHerokuの上word2vec展開しています。 ありがとうございます。
これらのエラーログから、問題は 'konlpy'と' jpype'を含むと思われる - gensimかword2vecません。具体的には、 'jpype'パッケージのコードは、heroku dynoに'/usr/lib/jvm 'ディレクトリを見つけることを期待していますが、そうではありません。だから、 'jpype'をherokuで動作させる方法や、Pythonビルドパックに加えてJVMをインストールする方法のヒントを探したいかもしれません。 – gojomo
ありがとう! JVMのインストールがこの問題を解決するようです。それでも、PythonベースのサーバーにJVMをインストールする方法はわかりません。 requirements.txtにopenjdkを追加するだけでJVMをインストールできますか?ありがとうございました:) –
(require.txtによって駆動される)Pythonインストールルーチンは、通常、Python以外のパッケージ(JVMなど)をインストールしません。 Heroku dynoにJVMを自動インストールするためのアイデアについては、 'jpype'とHerokuのヘルプ領域を検索する必要があります。 – gojomo