【问题标题】:Deploying to Heroku with Anaconda使用 Anaconda 部署到 Heroku
【发布时间】:2014-08-25 06:59:43
【问题描述】:

我有一个想要部署到 Heroku 的 Django 应用程序。我尝试按照此处的说明进行操作:https://devcenter.heroku.com/articles/getting-started-with-django 它告诉你使用虚拟环境。

但是,我使用的是 Anaconda,它不能很好地与虚拟环境配合使用。有没有人将带有 Anaconda 的 Django 应用程序部署到 Heroku 并且可以指导我完成这些步骤?

【问题讨论】:

标签: django heroku virtualenv anaconda


【解决方案1】:

我也有这个问题。 我想部署一个使用 numpy、sckit-learn 和其他一些 conda 包的 django 应用程序。 我使用了conda-buildpack,但无法从 django 内部访问已安装的软件包。所以我创建了一个扩展PYTHONPATH 的分支,并删除了使用pip install -r requirements.txt 安装依赖项的部分,因为这部分与heroku 上的memcached 发生冲突。 现在我有一个multiple buildpack setup 使用默认的 heroku python buildpackmy custom condas buildpack fork requirements.txt 由 python buildpack 处理,conda-requirements.txt 由 conda buildpack 处理。对我来说就像一个魅力。

【讨论】:

  • 您是否在设置中首先运行 conda buildpack?
  • 没有。我首先运行python-buildpack,最后运行conda-buildpack
  • 嗨,我正在尝试使用 python3.4 来做到这一点。我在这里发布了一个问题:github.com/kennethreitz/conda-buildpack/issues/…。你知道我做错了什么吗?
【解决方案2】:

如果您在 conda 环境中,那么使用这些步骤可能有助于将您的 Django 应用程序部署到 Heroku:

在部署之前,对您的项目进行以下四项更改,以便可以使用 Heroku 在线部署:

  1. 安装gunicorn 作为您的网络服务器。 (由于您使用的是 conda 环境,gunicorn 目前无法在任何 conda 渠道安装。因此,请使用 pip install gunicorn
  2. requirements.txt 文件添加到项目的基本目录中,并在其中添加模块名称及其版本,或者简单地复制运行pip freeze 命令后获得的内容。
  3. 创建一个新文件:Procfile & 在其中添加以下内容:

    web: gunicorn [项目名称].wsgi --log-file -

    (这里[Project_name]是你自己项目的目录名)

    这表示要使用现有的 [Project_name].wsgi 文件,但要使用 gunicorn。

  4. 只需对settings.py 文件进行一次更改:

    ALLOWED_HOSTS = ['*']

    (通配符星号 * 表示所有域都可以接受以保持简单。)

现在您终于可以使用以下步骤进行部署了:

  • 在 Heroku 上创建一个新应用: 在 CLI 上输入 heroku create

    (Heroku 将为您的应用创建一个随机名称;[your_app_name])

  • 为 Heroku 添加一个 git 远程“钩子”:

    heroku git:remote -a [your_app_name]

  • 忽略静态文件:

    heroku 配置:设置 DISABLE_COLLECTSTATIC=1

  • 将我们的代码推送到 Heroku:

    git push heroku 大师

  • 最后,让您的 Heroku 应用上线:

    heroku ps:scale web=1

(这里,web=1 用于基本 Heroku 服务)

打开您的应用程序:heroku open

您的应用现在应该可以在 Heroku 上运行了

【讨论】:

    【解决方案3】:

    我能够使用 Firebolt 的方法进行部署,并进行了以下修改:

    在第 2 步中:将 requirements.txt 文件添加到项目基目录时,如果要复制 pip freeze 命令的内容,则必须将对文件路径的任何引用替换为包的版本。

    示例:将“asgiref @ file:///tmp/build/80754af9/asgiref_1602513567813/work”替换为“asgiref==3.3.0”。

    为了检查要安装哪个版本的包:

    1. 运行命令“conda env export > environment.yml”,
    2. 打开 environment.yml,然后
    3. 查看列表中与相关软件包对应的版本

    【讨论】:

    • 是的,这有点痛苦,但在我的情况下它也确实有效。谢谢,@Andrew H
    猜你喜欢
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2014-06-07
    • 2021-11-25
    • 2012-03-24
    • 2018-05-08
    相关资源
    最近更新 更多