Heroku Gunicorn 部署错误:NoModuleNameError

pil*_*ks7 2 django heroku gunicorn procfile

可能有点超出我的深度,我已经彻底阅读了heroku文档,但仍然不太明白Procfile应该如何设置。尝试部署 heroku ( $ heroku open),给出以下错误日志:

\n\n
2020-01-27T11:39:57.597570+00:00 app[web.1]: backlog: 2048\n2020-01-27T11:39:57.597572+00:00 app[web.1]: workers: 1\n2020-01-27T11:39:57.597590+00:00 app[web.1]: worker_class: sync\n2020-01-27T11:39:57.597592+00:00 app[web.1]: threads: 1\n2020-01-27T11:39:57.597594+00:00 app[web.1]: worker_connections: 1000\n2020-01-27T11:39:57.597596+00:00 app[web.1]: max_requests: 0\n2020-01-27T11:39:57.597598+00:00 app[web.1]: max_requests_jitter: 0\n2020-01-27T11:39:57.597600+00:00 app[web.1]: timeout: 30\n2020-01-27T11:39:57.597602+00:00 app[web.1]: graceful_timeout: 30\n2020-01-27T11:39:57.597604+00:00 app[web.1]: keepalive: 2\n2020-01-27T11:39:57.597606+00:00 app[web.1]: limit_request_line: 4094\n2020-01-27T11:39:57.597608+00:00 app[web.1]: limit_request_fields: 100\n2020-01-27T11:39:57.597610+00:00 app[web.1]: limit_request_field_size: 8190\n2020-01-27T11:39:57.597612+00:00 app[web.1]: reload: False\n2020-01-27T11:39:57.597614+00:00 app[web.1]: reload_engine: auto\n2020-01-27T11:39:57.597615+00:00 app[web.1]: spew: False\n2020-01-27T11:39:57.597617+00:00 app[web.1]: check_config: False\n2020-01-27T11:39:57.597619+00:00 app[web.1]: preload_app: True\n2020-01-27T11:39:57.597621+00:00 app[web.1]: sendfile: None\n2020-01-27T11:39:57.597623+00:00 app[web.1]: chdir: /app\n2020-01-27T11:39:57.597625+00:00 app[web.1]: daemon: False\n2020-01-27T11:39:57.597627+00:00 app[web.1]: raw_env: []\n2020-01-27T11:39:57.597629+00:00 app[web.1]: pidfile: None\n2020-01-27T11:39:57.597630+00:00 app[web.1]: worker_tmp_dir: None\n2020-01-27T11:39:57.597632+00:00 app[web.1]: user: 52893\n2020-01-27T11:39:57.597634+00:00 app[web.1]: group: 52893\n2020-01-27T11:39:57.597636+00:00 app[web.1]: umask: 0\n2020-01-27T11:39:57.597638+00:00 app[web.1]: initgroups: False\n2020-01-27T11:39:57.597640+00:00 app[web.1]: tmp_upload_dir: None\n2020-01-27T11:39:57.597642+00:00 app[web.1]: secure_scheme_headers: {\'X-FORWARDED-PROTOCOL\': \'ssl\', \'X-FORWARDED-PROTO\': \'https\', \'X-FORWARDED-SSL\': \'on\'}\n2020-01-27T11:39:57.597645+00:00 app[web.1]: forwarded_allow_ips: [\'*\']\n2020-01-27T11:39:57.597646+00:00 app[web.1]: accesslog: -\n2020-01-27T11:39:57.597648+00:00 app[web.1]: access_log_format: %(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"\n2020-01-27T11:39:57.597650+00:00 app[web.1]: errorlog: -\n2020-01-27T11:39:57.597652+00:00 app[web.1]: loglevel: debug\n2020-01-27T11:39:57.597654+00:00 app[web.1]: capture_output: False\n2020-01-27T11:39:57.597656+00:00 app[web.1]: logger_class: gunicorn.glogging.Logger\n2020-01-27T11:39:57.597658+00:00 app[web.1]: logconfig: None\n2020-01-27T11:39:57.597660+00:00 app[web.1]: syslog_addr: udp://localhost:514\n2020-01-27T11:39:57.597662+00:00 app[web.1]: syslog: False\n2020-01-27T11:39:57.597665+00:00 app[web.1]: syslog_prefix: None\n2020-01-27T11:39:57.597667+00:00 app[web.1]: syslog_facility: user\n2020-01-27T11:39:57.597669+00:00 app[web.1]: enable_stdio_inheritance: False\n2020-01-27T11:39:57.597671+00:00 app[web.1]: statsd_host: None\n2020-01-27T11:39:57.597673+00:00 app[web.1]: statsd_prefix:\n2020-01-27T11:39:57.597674+00:00 app[web.1]: proc_name: None\n2020-01-27T11:39:57.597677+00:00 app[web.1]: default_proc_name: grad.wsgi:application\n2020-01-27T11:39:57.597679+00:00 app[web.1]: pythonpath: None\n2020-01-27T11:39:57.597681+00:00 app[web.1]: paste: None\n2020-01-27T11:39:57.597683+00:00 app[web.1]: on_starting: <function OnStarting.on_starting at 0x7fbdff281ae8>\n2020-01-27T11:39:57.597685+00:00 app[web.1]: on_reload: <function OnReload.on_reload at 0x7fbdff281c80>\n2020-01-27T11:39:57.597687+00:00 app[web.1]: when_ready: <function WhenReady.when_ready at 0x7fbdff281e18>\n2020-01-27T11:39:57.597689+00:00 app[web.1]: pre_fork: <function Prefork.pre_fork at 0x7fbdff28b048>\n2020-01-27T11:39:57.597691+00:00 app[web.1]: post_fork: <function Postfork.post_fork at 0x7fbdff28b1e0>\n2020-01-27T11:39:57.597693+00:00 app[web.1]: post_worker_init: <function PostWorkerInit.post_worker_init at 0x7fbdff28b378>\n2020-01-27T11:39:57.597695+00:00 app[web.1]: worker_int: <function WorkerInt.worker_int at 0x7fbdff28b510>\n2020-01-27T11:39:57.597697+00:00 app[web.1]: worker_abort: <function WorkerAbort.worker_abort at 0x7fbdff28b6a8>\n2020-01-27T11:39:57.597699+00:00 app[web.1]: pre_exec: <function PreExec.pre_exec at 0x7fbdff28b840>\n2020-01-27T11:39:57.597700+00:00 app[web.1]: pre_request: <function PreRequest.pre_request at 0x7fbdff28b9d8>\n2020-01-27T11:39:57.597702+00:00 app[web.1]: post_request: <function PostRequest.post_request at 0x7fbdff28bae8>\n2020-01-27T11:39:57.597704+00:00 app[web.1]: child_exit: <function ChildExit.child_exit at 0x7fbdff28bc80>\n2020-01-27T11:39:57.597706+00:00 app[web.1]: worker_exit: <function WorkerExit.worker_exit at 0x7fbdff28be18>\n2020-01-27T11:39:57.597708+00:00 app[web.1]: nworkers_changed: <function NumWorkersChanged.nworkers_changed at 0x7fbdff291048>\n2020-01-27T11:39:57.597710+00:00 app[web.1]: on_exit: <function OnExit.on_exit at 0x7fbdff2911e0>\n2020-01-27T11:39:57.597712+00:00 app[web.1]: proxy_protocol: False\n2020-01-27T11:39:57.597714+00:00 app[web.1]: proxy_allow_ips: [\'127.0.0.1\']\n2020-01-27T11:39:57.597716+00:00 app[web.1]: keyfile: None\n2020-01-27T11:39:57.597718+00:00 app[web.1]: certfile: None\n2020-01-27T11:39:57.597720+00:00 app[web.1]: ssl_version: 2\n2020-01-27T11:39:57.597722+00:00 app[web.1]: cert_reqs: 0\n2020-01-27T11:39:57.597724+00:00 app[web.1]: ca_certs: None\n2020-01-27T11:39:57.597726+00:00 app[web.1]: suppress_ragged_eofs: True\n2020-01-27T11:39:57.597728+00:00 app[web.1]: do_handshake_on_connect: False\n2020-01-27T11:39:57.597730+00:00 app[web.1]: ciphers: TLSv1\n2020-01-27T11:39:57.597736+00:00 app[web.1]: raw_paste_global_conf: []\n2020-01-27T11:39:57.597990+00:00 app[web.1]: Traceback (most recent call last):\n2020-01-27T11:39:57.597998+00:00 app[web.1]: File "/app/.heroku/python/bin/gunicorn", line 11, in <module>\n2020-01-27T11:39:57.598184+00:00 app[web.1]: sys.exit(run())\n2020-01-27T11:39:57.598190+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 74, in run\n2020-01-27T11:39:57.598330+00:00 app[web.1]: WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()\n2020-01-27T11:39:57.598336+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 203, in run\n2020-01-27T11:39:57.598498+00:00 app[web.1]: super(Application, self).run()\n2020-01-27T11:39:57.598504+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 72, in run\n2020-01-27T11:39:57.598635+00:00 app[web.1]: Arbiter(self).run()\n2020-01-27T11:39:57.598641+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 60, in __init__\n2020-01-27T11:39:57.598774+00:00 app[web.1]: self.setup(app)\n2020-01-27T11:39:57.598780+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 120, in setup\n2020-01-27T11:39:57.598919+00:00 app[web.1]: self.app.wsgi()\n2020-01-27T11:39:57.598924+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi\n2020-01-27T11:39:57.599052+00:00 app[web.1]: self.callable = self.load()\n2020-01-27T11:39:57.599058+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load\n2020-01-27T11:39:57.599182+00:00 app[web.1]: return self.load_wsgiapp()\n2020-01-27T11:39:57.599187+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp\n2020-01-27T11:39:57.599313+00:00 app[web.1]: return util.import_app(self.app_uri)\n2020-01-27T11:39:57.599319+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 352, in import_app\n2020-01-27T11:39:57.599526+00:00 app[web.1]: __import__(module)\n2020-01-27T11:39:57.599554+00:00 app[web.1]: ModuleNotFoundError: No module named \'grad\'\n2020-01-27T11:40:01.000000+00:00 app[api]: Build succeeded\n2020-01-27T11:40:13.471679+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=graduateproofreading.herokuapp.com request_id=013c7a9d-29af-445d-8417-3ca07ceeb6bb fwd="86.132.11.140" dyno= connect= service= status=503 bytes= protocol=https\n2020-01-27T11:40:13.643175+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=graduateproofreading.herokuapp.com request_id=9ba58cb3-7954-4c37-8d4a-23112dabe8f5 fwd="86.132.11.140" dyno= connect= service= status=503 bytes= protocol=https\n
Run Code Online (Sandbox Code Playgroud)\n\n

我猜这是大量令人困惑的代码中的操作线2020-01-27T11:39:57.599554+00:00 app[web.1]: ModuleNotFoundError: No module named \'grad\',但我显然不是专家......

\n\n

我的 Procfile 看起来像这样:

\n\n
web: gunicorn grad.wsgi:application --log-file - --log-level debug --preload --workers 1\n
Run Code Online (Sandbox Code Playgroud)\n\n

grad.wsgi 看起来像这样:

\n\n
import os\n\nfrom django.core.wsgi import get_wsgi_application\n\nos.environ.setdefault("DJANGO_SETTINGS_MODULE", "grad.settings")\n\napplication = get_wsgi_application()\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的文件夹结构(如果需要):

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CNAME\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 get-pip.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gpproject\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 db.sqlite3\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gp.sublime-project\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 gp.sublime-workspace\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 grad\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __pycache__\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 settings.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 urls.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wsgi.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 settings.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 static\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 office.jpeg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pics\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 office.jpeg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 urls.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 views.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wsgi.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 jobboard\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 admin.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 apps.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 migrations\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 0001_initial.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 0002_auto_20180716_1122.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tests.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 views.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 login\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 admin.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 apps.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 migrations\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 0001_initial.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __pycache__\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 0001_initial.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __pycache__\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 admin.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 apps.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 urls.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 views.cpython-35.pyc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 static\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pics\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 office.jpeg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 templates\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 login\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 office.jpeg\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 loginbutton.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 logoutbutton.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 navbar.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 registration\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 login.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 logintut.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 password_reset_complete.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 password_reset_confirm.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 password_reset_done.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 password_reset_email.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 password_reset_form.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 signup.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tests.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 urls.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 views.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 manage.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 oldbackupdb.sqlite3\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 staticfiles\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 templates\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 footer.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Header.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index2.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 jobpost.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 jobs.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 navbar.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 oldHeader.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 sidenav.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 signup.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 userdropdown.html\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 universities.xcf\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 users\n\xe2\x94\x82\xc2\xa

Ala*_*air 5

您正确地识别出错误消息中的关键行是ModuleNotFoundError.

2020-01-27T11:39:57.599554+00:00 app[web.1]: ModuleNotFoundError: No module named 'grad'
Run Code Online (Sandbox Code Playgroud)

问题是您的 Django 项目目录(包含 的目录manage.py)不在项目根目录中,而是在gpproject目录中。

因此,您需要将该目录添加到带有--python标志的Python路径中,以便grad可以导入其中的模块。

web: gunicorn grad.wsgi:application --python gpproject --log-file - --log-level debug --preload --workers 1
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!经过大量的网络搜索,我终于找到了对我有帮助的答案。 (2认同)