即使安装了tkinter的buildpack,Heroku应用程序也会崩溃

时间:2019-06-19 21:34:26

标签: python heroku tkinter

Heroku在部署我的Flask应用程序时显示此错误。

2019-06-19T21:23:08.319726+00:00 app[web.1]: File "/app/main.py", line 2, in <module>
2019-06-19T21:23:08.319728+00:00 app[web.1]: from tkinter import Tk, font
2019-06-19T21:23:08.319729+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/tkinter/__init__.py", line 36, in <module>
2019-06-19T21:23:08.319732+00:00 app[web.1]: import _tkinter # If this fails your Python may not be configured for Tk
2019-06-19T21:23:08.319734+00:00 app[web.1]: ModuleNotFoundError: No module named '_tkinter'

我意识到Heroku默认不支持tkinter,所以我安装了一个buildpack来解决。按照本StackOverflow指南进行解决。 https://stackoverflow.com/a/43820042/9575698

但是,我仍然遇到相同的错误。以下是Heroku CLI的错误日志。

2019-06-19T21:23:08.319726+00:00 app[web.1]: File "/app/main.py", line 2, in <module>
2019-06-19T21:23:08.319728+00:00 app[web.1]: from tkinter import Tk, font
2019-06-19T21:23:08.319729+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/tkinter/__init__.py", line 36, in <module>
2019-06-19T21:23:08.319732+00:00 app[web.1]: import _tkinter # If this fails your Python may not be configured for Tk
2019-06-19T21:23:08.319734+00:00 app[web.1]: ModuleNotFoundError: No module named '_tkinter'
2019-06-19T21:23:08.320489+00:00 app[web.1]: [2019-06-19 21:23:08 +0000] [10] [INFO] Worker exiting (pid: 10)
2019-06-19T21:23:08.436694+00:00 app[web.1]: [2019-06-19 21:23:08 +0000] [4] [INFO] Shutting down: Master
2019-06-19T21:23:08.436783+00:00 app[web.1]: [2019-06-19 21:23:08 +0000] [4] [INFO] Reason: Worker failed to boot.
2019-06-19T21:23:08.536043+00:00 heroku[web.1]: State changed from starting to crashed
2019-06-19T21:23:08.541730+00:00 heroku[web.1]: State changed from crashed to starting
2019-06-19T21:23:08.512970+00:00 heroku[web.1]: Process exited with status 3
2019-06-19T21:23:14.000000+00:00 app[api]: Build succeeded
2019-06-19T21:23:17.005526+00:00 heroku[web.1]: Starting process with command `gunicorn --bind 0.0.0.0:6467 main:app`
2019-06-19T21:23:19.986418+00:00 app[web.1]: [2019-06-19 21:23:19 +0000] [4] [INFO] Starting gunicorn 19.9.0
2019-06-19T21:23:19.987414+00:00 app[web.1]: [2019-06-19 21:23:19 +0000] [4] [INFO] Listening at: http://0.0.0.0:6467 (4)
2019-06-19T21:23:19.987570+00:00 app[web.1]: [2019-06-19 21:23:19 +0000] [4] [INFO] Using worker: sync
2019-06-19T21:23:19.998957+00:00 app[web.1]: [2019-06-19 21:23:19 +0000] [10] [INFO] Booting worker with pid: 10
2019-06-19T21:23:20.088076+00:00 app[web.1]: [2019-06-19 21:23:20 +0000] [11] [INFO] Booting worker with pid: 11
2019-06-19T21:23:20.897103+00:00 heroku[web.1]: State changed from starting to up
2019-06-19T21:23:20.806536+00:00 app[web.1]: [2019-06-19 21:23:20 +0000] [10] [ERROR] Exception in worker process
2019-06-19T21:23:20.806579+00:00 app[web.1]: Traceback (most recent call last):
2019-06-19T21:23:20.806582+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2019-06-19T21:23:20.806584+00:00 app[web.1]: worker.init_process()
2019-06-19T21:23:20.806586+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
2019-06-19T21:23:20.806588+00:00 app[web.1]: self.load_wsgi()
2019-06-19T21:23:20.806591+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
2019-06-19T21:23:20.806593+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2019-06-19T21:23:20.806595+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-06-19T21:23:20.806596+00:00 app[web.1]: self.callable = self.load()
2019-06-19T21:23:20.806599+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
2019-06-19T21:23:20.806601+00:00 app[web.1]: return self.load_wsgiapp()
2019-06-19T21:23:20.806603+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
2019-06-19T21:23:20.806605+00:00 app[web.1]: return util.import_app(self.app_uri)
2019-06-19T21:23:20.806607+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
2019-06-19T21:23:20.806609+00:00 app[web.1]: __import__(module)
2019-06-19T21:23:20.806611+00:00 app[web.1]: File "/app/main.py", line 2, in <module>
2019-06-19T21:23:20.806613+00:00 app[web.1]: from tkinter import Tk, font
2019-06-19T21:23:20.806615+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/tkinter/__init__.py", line 36, in <module>
2019-06-19T21:23:20.806617+00:00 app[web.1]: import _tkinter # If this fails your Python may not be configured for Tk
2019-06-19T21:23:20.806627+00:00 app[web.1]: ModuleNotFoundError: No module named '_tkinter'
2019-06-19T21:23:20.807228+00:00 app[web.1]: [2019-06-19 21:23:20 +0000] [10] [INFO] Worker exiting (pid: 10)
2019-06-19T21:23:20.918098+00:00 app[web.1]: [2019-06-19 21:23:20 +0000] [11] [ERROR] Exception in worker process
2019-06-19T21:23:20.918103+00:00 app[web.1]: Traceback (most recent call last):
2019-06-19T21:23:20.918105+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2019-06-19T21:23:20.918107+00:00 app[web.1]: worker.init_process()
2019-06-19T21:23:20.918109+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
2019-06-19T21:23:20.918115+00:00 app[web.1]: self.load_wsgi()
2019-06-19T21:23:20.918117+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
2019-06-19T21:23:20.918119+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2019-06-19T21:23:20.918121+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-06-19T21:23:20.918123+00:00 app[web.1]: self.callable = self.load()
2019-06-19T21:23:20.918125+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
2019-06-19T21:23:20.918127+00:00 app[web.1]: return self.load_wsgiapp()
2019-06-19T21:23:20.918130+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
2019-06-19T21:23:20.918132+00:00 app[web.1]: return util.import_app(self.app_uri)
2019-06-19T21:23:20.918134+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
2019-06-19T21:23:20.918135+00:00 app[web.1]: __import__(module)
2019-06-19T21:23:20.918137+00:00 app[web.1]: File "/app/main.py", line 2, in <module>
2019-06-19T21:23:20.918139+00:00 app[web.1]: from tkinter import Tk, font
2019-06-19T21:23:20.918141+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/tkinter/__init__.py", line 36, in <module>
2019-06-19T21:23:20.918143+00:00 app[web.1]: import _tkinter # If this fails your Python may not be configured for Tk
2019-06-19T21:23:20.918152+00:00 app[web.1]: ModuleNotFoundError: No module named '_tkinter'
2019-06-19T21:23:20.918897+00:00 app[web.1]: [2019-06-19 21:23:20 +0000] [11] [INFO] Worker exiting (pid: 11)
2019-06-19T21:23:21.001455+00:00 app[web.1]: Traceback (most recent call last):
2019-06-19T21:23:21.001467+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 210, in run
2019-06-19T21:23:21.002166+00:00 app[web.1]: self.sleep()
2019-06-19T21:23:21.002241+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 360, in sleep
2019-06-19T21:23:21.002753+00:00 app[web.1]: ready = select.select([self.PIPE[0]], [], [], 1.0)
2019-06-19T21:23:21.002761+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 245, in handle_chld
2019-06-19T21:23:21.003203+00:00 app[web.1]: self.reap_workers()
2019-06-19T21:23:21.003317+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
2019-06-19T21:23:21.003978+00:00 app[web.1]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
2019-06-19T21:23:21.004042+00:00 app[web.1]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
2019-06-19T21:23:21.004051+00:00 app[web.1]:
2019-06-19T21:23:21.004053+00:00 app[web.1]: During handling of the above exception, another exception occurred:
2019-06-19T21:23:21.004055+00:00 app[web.1]:
2019-06-19T21:23:21.004059+00:00 app[web.1]: Traceback (most recent call last):
2019-06-19T21:23:21.004064+00:00 app[web.1]: File "/app/.heroku/python/bin/gunicorn", line 11, in <module>
2019-06-19T21:23:21.004296+00:00 app[web.1]: sys.exit(run())
2019-06-19T21:23:21.004303+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 61, in run
2019-06-19T21:23:21.004564+00:00 app[web.1]: WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
2019-06-19T21:23:21.004571+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 223, in run
2019-06-19T21:23:21.004894+00:00 app[web.1]: super(Application, self).run()
2019-06-19T21:23:21.004902+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 72, in run
2019-06-19T21:23:21.005109+00:00 app[web.1]: Arbiter(self).run()
2019-06-19T21:23:21.005117+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 232, in run
2019-06-19T21:23:21.005404+00:00 app[web.1]: self.halt(reason=inst.reason, exit_status=inst.exit_status)
2019-06-19T21:23:21.005412+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 345, in halt
2019-06-19T21:23:21.005894+00:00 app[web.1]: self.stop()
2019-06-19T21:23:21.005902+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 393, in stop
2019-06-19T21:23:21.006306+00:00 app[web.1]: time.sleep(0.1)
2019-06-19T21:23:21.006313+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 245, in handle_chld
2019-06-19T21:23:21.006597+00:00 app[web.1]: self.reap_workers()
2019-06-19T21:23:21.006604+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
2019-06-19T21:23:21.007070+00:00 app[web.1]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
2019-06-19T21:23:21.007078+00:00 app[web.1]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
2019-06-19T21:23:21.101775+00:00 heroku[web.1]: State changed from up to crashed
2019-06-19T21:23:21.076488+00:00 heroku[web.1]: Process exited with status 1
2019-06-19T21:23:24.914695+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=fontscan2.herokuapp.com request_id=006f5f6b-3a0d-4aee-8160-c96f09655306 fwd="96.255.225.169" dyno= connect= service= status=503 bytes= protocol=https
2019-06-19T21:23:25.337789+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=fontscan2.herokuapp.com request_id=71e97150-f1f1-48bb-8fe1-cd737c77f9ed fwd="96.255.225.169" dyno= connect= service= status=503 bytes= protocol=https

我能够在本地运行Flask应用。但是,由于这些错误,我无法在Heroku上部署和运行它。

这是我的Procfile

web: gunicorn --bind 0.0.0.0:$PORT main:app

这是我用于Buildpack的Apt文件

python3-tk

0 个答案:

没有答案