当我运行git push heroku master将应用程序部署到Heroku时,我不断收到错误消息
git push heroku master
Heroku Push被拒绝,无法编译Python应用程序。找不到满足要求的版本
问题是requirements.txt我制作的文件
requirements.txt
pip freeze > requirements.txt
转储了我的系统范围内的Python库,而不仅仅是我的库virtualenv。这很奇怪,因为我从活动的virtualenv中冻结了这些要求-这种行为不应该发生。
virtualenv
virtualenv Windows上的Windows总是让我放慢速度,所以我准备尝试一个新的环境管理器。
我想使用,conda但正在努力将其部署到Heroku。我遵循Heroku关于conda构建包的说明,只是为了在构建时获得模糊/无益的错误。
conda
如何使用Conda环境将Python应用程序部署到Heroku?
Heroku不在乎您是使用环境virtualenv还是conda管理环境。使用一个或另一个与部署过程几乎无关。
不要理会Conda Environment Buildpack的说明,因为这些说明是用于部署远程conda环境的,而这并不是您要尝试的。您,我的朋友,正在尝试部署远程 your_app 环境。
$ mkdir dash_app_example $ cd dash_app_example
$ 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
$ conda env create
$ source activate dash_app #Writing source is not required on Windows
当前应该在dash_app中:
$ conda info --envs #Current environment is noted by a *
app.py
Procfile
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)
web: gunicorn app:server
requirements.txt:描述您的Python依赖关系。您可以通过$ pip freeze > requirements.txt在命令行上运行来自动填充此文件。
$ pip freeze > requirements.txt
- dash_app_example --- app.py --- environment.yml --- Procfile --- requirements.txt
请注意,此目录中没有环境数据。那是因为conda与virtualenv将应用程序目录整齐地存储在所有位置不同,所有环境都不一样。无需.gitignore这些文件…它们不在这里!
.gitignore
$ 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"
资料来源: