【问题标题】:Heroku push rejected (Django app)Heroku 推送被拒绝(Django 应用程序)
【发布时间】:2016-08-14 09:45:12
【问题描述】:

我正在将 Django 应用程序部署到 GitHub 和 Heroku。
我首先将它部署到 GitHub,删除(将它放在 .gitignore 文件中)“settings.py”,现在我试图将它推送到 Heroku,我收到一个错误:

ImportError: No module named settings
remote: 
remote:  !     Error while running '$ python manage.py collectstatic --noinput'.
remote:        See traceback above for details.
remote: 
remote:        You may need to update application code to resolve this error.
remote:        Or, you can disable collectstatic for this application:
remote: 
remote:           $ heroku config:set DISABLE_COLLECTSTATIC=1
remote: 
remote:        https://devcenter.heroku.com/articles/django-assets
remote: 
remote:  !     Push rejected, failed to compile Python app

如何避免将某些文件推送到 GitHub,但同时又可以将其推送到 Heroku?

更新:

我尝试将 settings.py 和 temp_settings.py 分开,但现在该应用程序不再工作了。这是我尝试运行本地服务器时的回溯:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/stefano/projects/blog-project/blogprojectenv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/home/stefano/projects/blog-project/blogprojectenv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 303, in execute
    settings.INSTALLED_APPS
  File "/home/stefano/projects/blog-project/blogprojectenv/local/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in __getattr__
    self._setup(name)
  File "/home/stefano/projects/blog-project/blogprojectenv/local/lib/python2.7/site-packages/django/conf/__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/stefano/projects/blog-project/blogprojectenv/local/lib/python2.7/site-packages/django/conf/__init__.py", line 92, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/stefano/projects/blog-project/blogproject/settings.py", line 104, in <module>
    DATABASES['default'].update(db_from_env)
NameError: name 'DATABASES' is not defined

似乎 settings.py 无法“访问” temp_settings.py,因为我已将所有数据库设置剪切粘贴到 temp_settings 中。有错吗?

【问题讨论】:

    标签: django heroku github


    【解决方案1】:

    通常的做法是不要忽略代码库中的 settings.py 文件。相反,请执行以下操作:

    try:
        from temp_settings import *
    except ImportError:
        pass
    

    在 settings.py 文件的末尾,将 temp_settings.py 添加到 .gitignore

    对于需要保密的凭据,请使用 temp_settings。

    【讨论】:

    • 我已经尝试过,当推送到 GitHub 时,“settings.py”上的 private 凭据介于某种标签之间,如下所示:“
    • 这与私人凭据无关;这是 git 中合并错误的结果。你需要修复它。
    • 现在可以了,但是该应用程序不再工作了,因为它无法“访问”“temp_settings.py”文件的数据。我正在更新问题。
    • 为了访问“temp_settings.py”文件,它应该与您的 settings.py 文件位于同一目录中。如果可以,请您分享您的目录结构吗?
    猜你喜欢
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 2016-12-04
    • 2014-04-20
    • 2017-01-09
    • 2021-09-22
    • 1970-01-01
    相关资源
    最近更新 更多