当我运行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 application和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 *
使用
app.py
,requirements.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
请注意,此目录中没有环境数据。这是因为
conda
与virtualenv
不同,它将您所有的环境都整齐地存储在远离应用程序目录的位置。无需.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"
资料来源:
virtualenv
)关于python - 使用Conda环境(而不是virtualenv)将Python(Dash)应用程序部署到Heroku,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47949173/