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



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

pip freeze > requirements.txt

转储了我系统范围内的Python库,而不仅仅是virtualenv(as described here)中的库。这很奇怪,因为我从事件的virtualenv中卡住了这些要求-这种行为不应该发生。

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

我想使用conda,但正努力将其部署到Heroku。我遵循Heroku's instructions for conda build-packs只是在构建时得到模糊/无益的错误。

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

最佳答案

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

不必理会Conda Environment Buildpack指令,因为这些指令是用于部署远程conda环境的,这不是您要尝试做的。您,我的 friend ,正在尝试部署远程your_app环境。

这是使用dash applicationconda的方法:

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

$ 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 *

使用app.pyrequirements.txtProcfile初始化文件夹:
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"

资料来源:
  • Deploying an application with Heroku (using Conda Environments)
  • My Python Environment Workflow with Conda
  • Deploying Dash Apps(使用virtualenv)
  • 关于python - 使用Conda环境(而不是virtualenv)将Python(Dash)应用程序部署到Heroku,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47949173/

    10-16 08:29