简体   繁体   中英

google cloud deploy ERROR: Could not find a version that satisfies the requirement

I have an anaconda panel application, this works perfectly in the local environment, but when trying to deploy it with Google App Engine it's giving me errors.

this is the actual source location I modified this to the following

在此处输入图像描述

app.yaml

runtime: python
env: flex
entrypoint: panel serve app.py --address 0.0.0.0 --port 8080 --allow-websocket-origin="*"

runtime_config:
  python_version: 3.7

manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

app.py

import hvplot.pandas
import pandas as pd
import numpy as np
import panel as pn

pn.extension('tabulator')


# cache data to improve dashboard performance
if 'data' not in pn.state.cache.keys():

    df = pd.read_csv(
        'https://raw.githubusercontent.com/owid/co2-data/master/owid-co2-data.csv')

    pn.state.cache['data'] = df.copy()

else:

    df = pn.state.cache['data']

# Fill NAs with 0s and create GDP per capita column
df = df.fillna(0)
df['gdp_per_capita'] = np.where(
    df['population'] != 0, df['gdp'] / df['population'], 0)

# Make DataFrame Pipeline Interactive
idf = df.interactive()

# Define Panel widgets
year_slider = pn.widgets.IntSlider(
    name='Year slider', start=1750, end=2020, step=5, value=1850)
year_slider

# Radio buttons for CO2 measures
yaxis_co2 = pn.widgets.RadioButtonGroup(
    name='Y axis',
    options=['co2', 'co2_per_capita', ],
    button_type='success'
)

continents = ['World', 'Asia', 'Oceania', 'Europe',
              'Africa', 'North America', 'South America', 'Antarctica']

co2_pipeline = (
    idf[
        (idf.year <= year_slider) &
        (idf.country.isin(continents))
    ]
    .groupby(['country', 'year'])[yaxis_co2].mean()
    .to_frame()
    .reset_index()
    .sort_values(by='year')
    .reset_index(drop=True)
)

co2_plot = co2_pipeline.hvplot(
    x='year', by='country', y=yaxis_co2, line_width=2, title="CO2 emission by continent")

co2_table = co2_pipeline.pipe(
    pn.widgets.Tabulator, pagination='remote', page_size=10, sizing_mode='stretch_width')


co2_vs_gdp_scatterplot_pipeline = (
    idf[
        (idf.year == year_slider) &
        (~ (idf.country.isin(continents)))
    ]
    .groupby(['country', 'year', 'gdp_per_capita'])['co2'].mean()
    .to_frame()
    .reset_index()
    .sort_values(by='year')
    .reset_index(drop=True)
)

co2_vs_gdp_scatterplot = co2_vs_gdp_scatterplot_pipeline.hvplot(x='gdp_per_capita',
                                                                y='co2',
                                                                by='country',
                                                                size=80, kind="scatter",
                                                                alpha=0.7,
                                                                legend=False,
                                                                height=500,
                                                                width=500)


yaxis_co2_source = pn.widgets.RadioButtonGroup(
    name='Y axis',
    options=['coal_co2', 'oil_co2', 'gas_co2'],
    button_type='success'
)

continents_excl_world = ['Asia', 'Oceania', 'Europe',
                         'Africa', 'North America', 'South America', 'Antarctica']

co2_source_bar_pipeline = (
    idf[
        (idf.year == year_slider) &
        (idf.country.isin(continents_excl_world))
    ]
    .groupby(['year', 'country'])[yaxis_co2_source].sum()
    .to_frame()
    .reset_index()
    .sort_values(by='year')
    .reset_index(drop=True)
)

co2_source_bar_plot = co2_source_bar_pipeline.hvplot(kind='bar',
                                                     x='country',
                                                     y=yaxis_co2_source,
                                                     title='CO2 source by continent')

# Layout using Template
template = pn.template.FastListTemplate(
    title='World CO2 emission dashboard',
    sidebar=[pn.pane.Markdown("# CO2 Emissions and Climate Change"),
             pn.pane.Markdown("#### Carbon dioxide emissions are the primary driver of global climate change. It’s widely recognised that to avoid the worst impacts of climate change, the world needs to urgently reduce emissions. But, how this responsibility is shared between regions, countries, and individuals has been an endless point of contention in international discussions."),
             pn.pane.PNG('climate_day.png', sizing_mode='scale_both'),
             pn.pane.Markdown("## Settings"),
             year_slider],
    main=[pn.Row(pn.Column(yaxis_co2,
                           co2_plot.panel(width=700), margin=(0, 25)),
                 co2_table.panel(width=500)),
          pn.Row(pn.Column(co2_vs_gdp_scatterplot.panel(width=600), margin=(0, 25)),
                 pn.Column(yaxis_co2_source, co2_source_bar_plot.panel(width=600)))],
    accent_base_color="#88d8b0",
    header_background="#88d8b0",
)
# template.show()
template.servable()

Once I run gcloud app deploy this error came:

在此处输入图像描述

在此处输入图像描述

Then I downgraded in requirements.txt

panel==0.12.0
bokeh==2.3.3
hvplot==0.7.2
aiohttp==3.8.1
aiosignal==1.2.0
async-timeout==4.0.2
attrs==21.4.0
backports.entry-points-selectable==1.1.1
base58==2.1.1
bitarray==1.2.2
cached-property==1.5.2
certifi==2021.10.8
charset-normalizer==2.0.10
click==8.0.3
colorama==0.4.4
commonmark==0.9.1
cytoolz==0.11.2
distlib==0.3.4
eth-abi==2.1.1
eth-account==0.5.7
eth-hash==0.3.2
eth-keyfile==0.5.1
eth-keys==0.3.4
eth-rlp==0.2.1
eth-typing==2.3.0
eth-utils==1.10.0
filelock==3.4.0
frozenlist==1.2.0
haralyzer==2.0.0
hexbytes==0.2.2
idna==3.3
ipfshttpclient==0.8.0a2
jsonschema==3.2.0
lru-dict==1.1.7
multiaddr==0.0.9
multidict==5.2.0
netaddr==0.8.0
numpy==1.21.6
pandas==1.3.5
parsimonious==0.8.1
pipenv==2021.11.23
pipenv-poetry-migrate==0.2.0
platformdirs==2.4.0
polygonscan-python==1.0.2
protobuf==3.19.4
pycryptodome==3.13.0
Pygments==2.11.2
pyrsistent==0.18.1
python-dateutil==2.8.2
python-dotenv==0.20.0
pytz==2022.1
requests==2.27.1
rich==9.13.0
rlp==2.0.1
six==1.16.0
tomlkit==0.10.1
toolz==0.11.2
typing-extensions==3.10.0.2
uniswap-python==0.5.5
urllib3==1.26.8
varint==1.0.2
virtualenv==20.10.0
virtualenv-clone==0.5.7
web3==5.26.0
websockets==9.1
yarl==1.7.2

Then ended up with not available polygonscan-python==1.0.2

在此处输入图像描述

Is there any way to upload these packages into Google Cloud, without downloading like this, how to solve this?

The version of numpy you first tried to use, and the polygonscan-python package require Python3.8. Your GAE Flex environment is built for Python3.7, so pip can't install these packages without meeting the requirements.

Unfortunately, the base Python Docker image that can be used in GAE Flex only supports up to Python 3.7. . So, your application can't run as you have set it up.

GAE Standard, however, supports thelatest Python runtime (3.10). I deployed your app in the Standard environment and could get it running. Let me know if this was useful.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM