If you use the R programming language and
shinyapps.io then you can use Python to set up your application.
I create my folder and I install the rsconnect-python python package.
mkdir rsconnect-python-001
cd rsconnect-python-001
pip install rsconnect-python --user
Collecting rsconnect-python
From the shinyapps webpage, I got my token and my secret for my account and I used this command:
rsconnect add --account catafest --name catafest --token YOUR_TOKEN --secret YOUR_SECRET
Detected the following inputs:
name: COMMANDLINE
insecure: DEFAULT
account: COMMANDLINE
token: COMMANDLINE
secret: COMMANDLINE
Checking shinyapps.io credential... [OK]
Added shinyapps.io credential "catafest".
You can see is set and working.
I used a simple R source code named app.r:
library(shiny)
# Definirea interfeței utilizatorului
ui <- fluidPage(
titlePanel("Aplicație Shiny Simplă"),
sidebarLayout(
sidebarPanel(
numericInput("num", "Introduceți un număr:", value = 1),
actionButton("goButton", "Generează")
),
mainPanel(
textOutput("rezultat")
)
)
)
# Definirea serverului
server <- function(input, output) {
observeEvent(input$goButton, {
num <- input$num
output$rezultat <- renderText({
paste("Numărul introdus este:", num)
})
})
}
# Crearea aplicației Shiny
shinyApp(ui, server)
The app.py file has this source code:
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
# Creați o aplicație Dash
app = dash.Dash(__name__)
# Definiți aspectul și structura aplicației
app.layout = html.Div([
html.H1("Aplicație Dash Simplă"),
dcc.Graph(id='grafic'),
dcc.Input(id='input-numar', type='number', value=1),
html.Div(id='rezultat')
])
# Definiți funcția callback pentru actualizarea graficului
@app.callback(
Output('grafic', 'figure'),
Input('input-numar', 'value')
)
def actualizare_grafic(numar):
# Implementați logica de actualizare a graficului aici
# Exemplu simplu: Un grafic cu o linie dreaptă cu panta egală cu numărul introdus
import plotly.express as px
import pandas as pd
data = pd.DataFrame({'x': range(10), 'y': [numar * x for x in range(10)]})
fig = px.line(data, x='x', y='y', title='Graficul personalizat')
return fig
# Rulează aplicația
if __name__ == '__main__':
app.run_server(debug=True)
I run this command into the RGUI command :
shiny::runApp("C:/PythonProjects/rsconnect-python-001/")
Listening on http://127.0.0.1:7036
The result on browser is this:
I used this command to deploy the application on shinyapps.io:
>rsconnect deploy shiny . --name catafest --title test
[WARNING] 2023-09-01T22:28:10+0300 Can't determine entrypoint; defaulting to 'app'
Warning: Capturing the environment using 'pip freeze'.
Consider creating a requirements.txt file instead.
...
Task done: Stopping old instances
Application successfully deployed to https://catafest.shinyapps.io/test/
...
deploying - Starting instances
Task done: Stopping old instances
Application successfully deployed to https://catafest.shinyapps.io/rsconnect-python-001/
←[32;20m [OK]
←[0m←[0mSaving deployed information...←[0m←[32;20m [OK]
←[0m
I need to fix this error, but first test without app.py was deploy on web.
[notice] A new release of pip is available: 23.1.2 -> 23.2.1
[notice] To update, run: /srv/connect/venv/bin/python3 -m pip install --upgrade pip
[2023-09-01T22:43:31.378864990+0000] Copying file manifest.json
←[31;20m [ERROR]: Application deployment failed with error: Unhandled Exception: Child Task 1332185768 error:
Unhandled Exception: 599
←[0mError: Application deployment failed with error: Unhandled Exception: Child Task 1332185768 error:
Unhandled Exception: 599
I will come with better results.