当前位置: 首页 > 面试题库 >

使用Conda环境(而不是virtualenv)将Python(Dash)应用程序部署到Heroku

乐正浩言
2023-03-14
问题内容

当我运行git push heroku master将应用程序部署到Heroku时,我不断收到错误消息

Heroku Push被拒绝,无法编译Python应用程序。找不到满足要求的版本

问题是requirements.txt我制作的文件

pip freeze > requirements.txt

转储了我的系统范围内的Python库,而不仅仅是我的库virtualenv。这很奇怪,因为我从活动的virtualenv中冻结了这些要求-这种行为不应该发生。

virtualenv Windows上的Windows总是让我放慢速度,所以我准备尝试一个新的环境管理器。

我想使用,conda但正在努力将其部署到Heroku。我遵循Heroku关于conda构建包的说明,只是为了在构建时获得模糊/无益的错误。

如何使用Conda环境将Python应用程序部署到Heroku?


问题答案:

Heroku不在乎您是使用环境virtualenv还是conda管理环境。使用一个或另一个与部署过程几乎无关。

不要理会Conda Environment
Buildpack的
说明,因为这些说明是用于部署远程conda环境的,而这并不是您要尝试的。您,我的朋友,正在尝试部署远程 your_app 环境。

这是使用破折号应用程序和执行以下操作的方法conda

为您的项目创建一个新文件夹:

$ mkdir dash_app_example
$ cd dash_app_example

用git初始化文件夹

$ git init # initializes an empty git repo

在中创建environment.yml文件dash_app_example

name: dash_app #Environment name
dependencies:
  - python=3.6
  - pip:
    - dash
    - dash-renderer
    - dash-core-components
    - dash-html-components
    - plotly
    - gunicorn # for app deployment

从创建环境environment.yml

$ conda env create

激活conda环境

$ source activate dash_app #Writing source is not required on Windows

确认您所处的环境正确。

当前应该在dash_app中:

$ conda info --envs #Current environment is noted by a *

Initialze与文件夹app.pyrequirements.txt以及Procfile

app.py

import dash
import dash_core_components as dcc
import dash_html_components as html
import os

app = dash.Dash(__name__)
server = app.server

app.css.append_css({"external_url": "https://codepen.io/chriddyp/pen/bWLwgP.css"})

app.layout = html.Div([
    html.H2('Hello World'),
    dcc.Dropdown(
        id='dropdown',
        options=[{'label': i, 'value': i} for i in ['LA', 'NYC', 'MTL']],
        value='LA'
    ),
    html.Div(id='display-value')
])

@app.callback(dash.dependencies.Output('display-value', 'children'),
              [dash.dependencies.Input('dropdown', 'value')])
def display_value(value):
    return 'You have selected "{}"'.format(value)

if __name__ == '__main__':
    app.run_server(debug=True)

Procfile

web: gunicorn app:server

requirements.txt:描述您的Python依赖关系。您可以通过$ pip freeze > requirements.txt在命令行上运行来自动填充此文件。

您的文件夹结构应如下所示

- dash_app_example
--- app.py
--- environment.yml
--- Procfile
--- requirements.txt

请注意,此目录中没有环境数据。那是因为condavirtualenv将应用程序目录整齐地存储在所有位置不同,所有环境都不一样。无需.gitignore这些文件…它们不在这里!

初始化Heroku,将文件添加到Git,然后部署

$ heroku create my-dash-app # change my-dash-app to a unique name
$ git add . # add all files to git
$ git commit -m 'Initial app boilerplate'
$ git push heroku master # deploy code to heroku
$ heroku ps:scale web=1  # run the app with a 1 heroku "dyno"

资料来源:

  1. 使用Heroku部署应用程序(使用Conda Environments)
  2. 我的Conda Python环境工作流程
  3. 部署Dash应用程序(使用virtualenv


 类似资料:
  • 问题内容: 并且都是Python软件包管理器。当两个存储库中都存在一个程序包时,合适的选择是什么?例如,Django可以安装其中之一,但是两者之间的区别是几个依赖项(conda- forge还有更多)。没有关于这些差异的解释,甚至没有简单的自述文件。 应该使用哪一个?康达或康达伪造?有关系吗? 问题答案: 简短的答案是,根据我的经验,通常使用哪个都无关紧要。 长答案: 所以是可以从其中安装的软件包

  • 这是我第一次在Heroku上部署应用程序。我用Python构建了一个Dash应用程序,在localhost中运行良好,我能够按照Dash教程在Heroku上成功构建和部署它,尽管我尝试启动它时应用程序没有加载(相反,它会在日志中产生错误)。 我使用的是Windows机器,还必须添加并使用这个自定义构建包([位于此处][1])才能使用Git LFS,因为我的一个数据文件太大,无法放在Git存储库中。

  • 问题内容: 我正在尝试在Heroku上使用Flask开发我的第一个“大型”应用程序,并尝试将此处的基本教程与以下说明结合:https : //devcenter.heroku.com/articles/python与以下说明:http:// flask.pocoo.org/docs/patterns/packages/#larger- applications。它在本地与“先行启动”一起工作,但是

  • 我已经尝试了许多配置来部署我的Restful Springboot2应用程序到heroku使用proplfile无济于事。我已经尝试了这里的一些建议/解决方案。 Procfile: Heroku日志:。 非常感谢任何对此的帮助。

  • 我试图将Spring Boot应用程序部署到Heroku,但我无法做到这一点。我的应用程序会自动检测为"heroku-maven-plugin",但我想将其部署为Java应用程序。 我怎样才能做到这一点?

  • 我将在Weblogic 11g上部署一个新的Spring JMS应用程序。将没有web组件的Spring应用程序部署到Weblogic的公认方式是什么? 从历史上看,我一直在开发的应用程序使用WAR来加载应用程序上下文。现在这似乎不是一个可以接受的解决方案,因为这个新应用程序没有任何网络组件。将部署包装在EJB中似乎也是不可接受的,因为Spring应该是EJB的替代品。RAR似乎也不合适,因为新应