Django Heroku上没有名为“ mysite.settings”的模块

时间:2019-02-19 12:24:37

标签: python django heroku django-settings

我是Heroku的新手,正尝试使用多个设置文件来设置Django项目。当我在Heroku上运行/打开我的Django应用程序时,出现“ ModuleNotFoundError:没有名为'mysite.settings'的模块。发现的是我没有'mysite.settings'文件...只是一个目录。 / p>

在Visual Studio中本地运行项目效果很好,当我通过Powershell在Heroku上运行不带任何参数的运行服务器时,它也运行良好,包括查找正确的设置文件。当我尝试使用“ heroku open”打开它时,它就会炸弹爆炸。

我的目录结构如下:

-mysite (main project sub-folder)
|
+- settings
    |
    +----- __init__
    +----- base
    +----- development (not imported to production site)
    +----- production
|
+- __init__
+- forms
+- models
+- urls
+- views

过去两天来,我一直在各种职位上寻找东西,但似乎没有任何效果。无论我尝试了什么,我收到的错误消息都是指“ mysite.settings”模块,该模块未在任何地方加载。我只加载“ mysite.settings.production”。错误是指目录而不是文件吗?

我尝试过的事情的清单:

  1. 我已将DJANGO_SETTINGS_MODULE环境变量设置为“ mysite.settings.production”。

    heroku config:set DJANGO_SETTINGS_MODULE=mysite.settings.production
    
  2. 我已尝试按照一份heroku票证中的建议将PYTHONPATH env变量设置为falsepath。

    heroku config:set PYTHONPATH=fakepath
    
  3. 我尝试使用初始化文件来加载设置。

    import os
    if os.environ.get('DJANGO_SETTINGS_MODULE', '') == 'mysite.settings.production'
        from .production import *
    else:
        from .development import *
    
  4. 我已经将manage.py和wsgi文件都更改为使用“ mysite.settings.production”

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.production")
    
  5. 我尝试在WSGI文件中设置系统路径。

    path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    if path not in sys.path:
        sys.path.append(path)
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.production")
    

其他说明:

  1. 对于Heroku,我已将wsgi文件重命名为prod_wsgi,并且回溯看起来像是在相应地运行它。

  2. 在settings.production中,由于重命名了wsgi文件,因此我的WSGI_APPLICATION设置为“ prod_wsgi.application”。

  3. 我已经安装了django_heroku,并将其导入我的settings.production的顶部,并将本地设置初始化作为文件的最后一行。

    import django_heroku  #(at top)
    django_heroku.settings(locals())  #(last line)
    

引用日志

2019-02-19T10:40:22.181193+00:00 app[web.1]: [2019-02-19 10:40:22 +0000] [12] [ERROR] Exception in worker process
2019-02-19T10:40:22.181241+00:00 app[web.1]: Traceback (most recent call last):
2019-02-19T10:40:22.181243+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2019-02-19T10:40:22.181245+00:00 app[web.1]: worker.init_process()
2019-02-19T10:40:22.181247+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
2019-02-19T10:40:22.181249+00:00 app[web.1]: self.load_wsgi()
2019-02-19T10:40:22.181251+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
2019-02-19T10:40:22.181253+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2019-02-19T10:40:22.181255+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-02-19T10:40:22.181257+00:00 app[web.1]: self.callable = self.load()
2019-02-19T10:40:22.181259+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
2019-02-19T10:40:22.181260+00:00 app[web.1]: return self.load_wsgiapp()
2019-02-19T10:40:22.181262+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
2019-02-19T10:40:22.181264+00:00 app[web.1]: return util.import_app(self.app_uri)
2019-02-19T10:40:22.181266+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
2019-02-19T10:40:22.181268+00:00 app[web.1]: __import__(module)
2019-02-19T10:40:22.181270+00:00 app[web.1]: File 
"/app/mysite/prod_wsgi.py", line 29, in <module>
2019-02-19T10:40:22.181272+00:00 app[web.1]: application = get_wsgi_application()
2019-02-19T10:40:22.181273+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
2019-02-19T10:40:22.181275+00:00 app[web.1]: django.setup(set_prefix=False)
2019-02-19T10:40:22.181277+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/django/__init__.py", line 19, in setup
2019-02-19T10:40:22.181279+00:00 app[web.1]: configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2019-02-19T10:40:22.181281+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 57, in __getattr__
2019-02-19T10:40:22.181283+00:00 app[web.1]: self._setup(name)
2019-02-19T10:40:22.181285+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 44, in _setup
2019-02-19T10:40:22.181287+00:00 app[web.1]: self._wrapped = Settings(settings_module)
2019-02-19T10:40:22.181288+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 107, in __init__
2019-02-19T10:40:22.181290+00:00 app[web.1]: mod = importlib.import_module(self.SETTINGS_MODULE)
2019-02-19T10:40:22.181292+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2019-02-19T10:40:22.181294+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2019-02-19T10:40:22.181315+00:00 app[web.1]: ModuleNotFoundError: No module named 'mysite.settings'

感谢您的帮助。

更新(02/21/19): 在50多位Git致力于解决此问题之后,我放弃了并删除了我的Heroku帐户。我在Procfile中的gunicorn语句中添加了一些其他调试选项,但没有任何帮助。 Pythonpath显示为“ None”,无论我在WSGI文件中使用sys.path还是在服务器设置中使用环境变量,我都无法设置它。

0 个答案:

没有答案