【问题标题】:Python application cant deploy to HerokuPython 应用程序无法部署到 Heroku
【发布时间】:2020-07-09 15:13:41
【问题描述】:

我在将它部署到 heroku 时发现了这个错误。

cp: 无法创建常规文件 '/app/tmp/cache/.heroku/requirements.txt': 没有这样的文件或目录

项目的procfile:

web: python app.py

项目的runtime.txt:

python-3.7.6

项目的requirements.txt:


    APScheduler==3.6.3
    certifi==2019.11.28
    Click==7.0
    colorhash==1.0.2
    configparser==4.0.2
    cycler==0.10.0
    Flask==1.1.1
    Flask-Cors==3.0.8
    gunicorn==20.0.4
    itsdangerous==1.1.0
    Jinja2==2.11.0
    kiwisolver==1.1.0
    kneed==0.5.3
    MarkupSafe==1.1.1
    numpy==1.18.1
    psutil==5.7.0
    pyparsing==2.4.6
    python-dateutil==2.8.1
    six==1.14.0
    SQLAlchemy==1.3.13
    tzlocal==2.0.0
    Werkzeug==0.16.1
    wincertstore==0.2
    chardet==3.0.4
    decorator==4.4.1
    entrypoints==0.3
    idna==2.8
    jsonschema==3.2.0
    matplotlib==3.1.3
    mccabe==0.6.1
    pandas==1.0.1
    pytz==2019.3
    pyzmq==18.1.1
    requests==2.22.0
    soupsieve==1.9.5
    urllib3==1.25.8
    webencodings==0.5.1
    widgetsnbextension==3.5.1

有人经历过吗?如果是,请指导我。

【问题讨论】:

  • 在以某种方式部署到 heroku 之后,但是当我运行应用程序时,它出现在日志中 Error R10 (Boot timeout) -> Web 进程在启动后 60 秒内未能绑定到 $PORT。不知道如何处理,请帮忙
  • 看看我的回答,如果有帮助,请告诉我。
  • 我这边也有同样的错误。我昨天尝试修复它,但我不能这样做。在互联网上搜索,但没有解决这个问题
  • 我遇到了和原来问题一样的问题

标签: python heroku


【解决方案1】:

如果您展示了您尝试运行的脚本,那就太好了。没有它,我假设错误可能与 procfile 中的错误配置有关。

尝试在您的 Procfile 中将 web 替换为 worker

如果您的 Procfile 中有“web”进程类型,运行该进程的 dyno 必须在 60 秒内(默认)绑定到其分配的 $PORT,以便能够通过 http/ 响应传入的 web 请求s。如果没有,Heroku 会按照 here 的说明删除测功机。

【讨论】:

    【解决方案2】:

    我不知道你的情况是不是这样

    例如,在您的情况下,如果您的文件名不是 app.py 而不是不同的。

    【讨论】:

      【解决方案3】:

      试试这个,

      在您的 cmd 提示符下:

      pip install gunicorn
      pip install whitenoise
      pip freeze>requirements.txt
      

      在您的项目主文件夹中添加一个名为Procfile(无扩展名)的文件,并在此文件类型中:

      web: gunicorn your_project_(main_folder)_name.wsgi
      

      注意:在您的 procfile 中,您输入了 app.py,但它应该是 my_project.wsgi。也许这足以解决您的问题。

      在您的项目主文件夹中添加一个名为staticfiles 的文件夹,并在此文件夹中添加一个名为__init__.py 的文件并将其留空。

      然后在你的 settings.py 中添加:

      STATICSTORAGE = "Whitenoise.storage.CompressedManifestStaticFilesStorage"
      

      再次在 settings.py 中,在 MIDDLEWARE 中,添加:

      'whitenoise.middleware.WhiteNoiseMiddleware',
      

      终于在你的 cmd 提示符下:

      git add .
      git commit -m "whatever you want"
      git push heroku master
      

      如果我是正确的,你第一次将你的代码推送到 Heroku,它会再次告诉你

      无法创建常规文件“/app/tmp/cache/.heroku/requirements.txt”: 没有这样的文件或目录

      但是它会收集所有的静态文件然后部署成功。

      从下次开始,收集的静态文件不再全部打印出来。

      如果没有,请尝试运行

      heroku run python manage.py collectstatic 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-05
        • 2015-10-25
        • 2012-10-30
        • 2017-07-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多