Cos’è PythonAnywhere?
PythonAnywhere è una piattaforma di hosting che permette di sviluppare, eseguire e distribuire applicazioni Python direttamente dal browser senza necessità di configurare server. È particolarmente utile per principianti e per chi vuole mettere online rapidamente progetti Python.
Funzionalità Principali
- Hosting di Applicazioni Web Python: Flask, Django e altri framework
- Console Python nel Browser: Scrivi e testa codice direttamente online
- Database Preconfigurati: MySQL e PostgreSQL già pronti all’uso
- Scheduler di Attività: Automatizza script con il task scheduler integrato
- Console Bash: Terminale Linux accessibile dal browser
- Ambienti Virtuali Python: Isolamento delle dipendenze
Piano Gratuito
PythonAnywhere offre un piano gratuito con:
- Un dominio del tipo
tuousername.pythonanywhere.com - CPU e RAM limitata (ma sufficiente per piccoli progetti)
- Accesso a MySQL (limitato a 100MB)
- Versioni Python preinstallate (2.7, 3.8, 3.9, 3.10)
- Possibilità di utilizzo di API esterne (con alcune limitazioni)
Creazione di un Sito Web Python in 5 Passaggi
1. Registrazione e Setup Iniziale
- Registrati su PythonAnywhere
- Crea un nuovo ambiente virtuale:
mkvirtualenv mio_ambiente --python=python3.10workon mio_ambiente
2. Installa le Dipendenze
pip install flask requests python-dotenv
Per interagire con database:
pip install mysql-connector-python
3. Crea l’Applicazione Flask
Crea un file app.py:
from flask import Flask, render_template
import os
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html', message="Il mio sito è online!")
if __name__ == "__main__":
app.run()
Crea una cartella templates e un file index.html:
<!DOCTYPE html>
<html>
<head>
<title>Il Mio Sito Python</title>
</head>
<body>
<h1>Benvenuto sul mio sito!</h1>
<p>{{ message }}</p>
</body>
</html>
4. Configura l’Applicazione Web
- Vai alla sezione “Web” di PythonAnywhere
- Clicca su “Add a new web app”
- Scegli “Manual configuration” e la versione Python desiderata
- Specifica il percorso del tuo ambiente virtuale
- Configura il file WSGI per puntare alla tua app Flask
File WSGI di esempio:
import sys
path = '/home/tuousername/mioapp'
if path not in sys.path:
sys.path.append(path)
from app import app as application
5. Ricarica l’Applicazione
- Clicca sul pulsante “Reload” nella sezione Web
- Visita
tuousername.pythonanywhere.comper vedere il tuo sito!
Integrazione con API Esterne (es. OpenAI)
PythonAnywhere permette di fare richieste HTTPS a siti esterni, anche nel piano gratuito, ma con alcune limitazioni.
Esempio di Integrazione con OpenAI
import os
import requests
from dotenv import load_dotenv
from flask import Flask, render_template
app = Flask(__name__)
load_dotenv() # Carica variabili d'ambiente dal file .env
API_KEY = os.environ.get("OPENAI_API_KEY")
def get_ai_response(prompt):
url = "https://api.openai.com/v1/chat/completions"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
data = {
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "Sei un assistente utile."},
{"role": "user", "content": prompt}
]
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
return response.json()['choices'][0]['message']['content']
else:
return f"Errore: {response.status_code} - {response.text}"
@app.route('/')
def home():
ai_message = get_ai_response("Scrivi un breve saluto per i visitatori del mio sito.")
return render_template('index.html', message=ai_message)
Gestione delle Variabili d’Ambiente
È fondamentale non inserire API key direttamente nel codice. PythonAnywhere offre due modi principali:
1. Tramite l’Interfaccia Web (Consigliato)
- Vai alla sezione “Web”
- Scorri fino a “Environment variables”
- Aggiungi coppie chiave-valore (es.
OPENAI_API_KEYe la tua chiave) - Ricarica l’applicazione
2. Tramite File .env (Per Sviluppo)
Crea un file .env nella cartella del progetto:
OPENAI_API_KEY=la_tua_chiave_api
Nel tuo codice Python:
from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.environ.get("OPENAI_API_KEY")
Connessione al Database MySQL
PythonAnywhere offre MySQL preconfigurato:
import mysql.connector
def connect_to_db():
conn = mysql.connector.connect(
host='tuousername.mysql.pythonanywhere-services.com',
user='tuousername',
password='tuapassword', # Usa variabili d'ambiente!
database='tuousername$default'
)
return conn
# Uso:
conn = connect_to_db()
cursor = conn.cursor()
cursor.execute("SELECT * FROM tabella")
data = cursor.fetchall()
cursor.close()
conn.close()
Limitazioni del Piano Gratuito
- Connessioni Esterne: Limitate a una whitelist di siti (ma include molti servizi popolari come OpenAI)
- Risorse CPU: Limitate, non adatte per applicazioni ad alto carico
- Inattività: Il sito va in sospensione dopo un periodo di inattività
- Spazio Disco: Limitato a 500MB
- Database: Limitato a 100MB
- Versioni Python: Solo quelle preinstallate, non personalizzabili
Suggerimenti Rapidi
- Durante lo sviluppo, testa le connessioni esterne per verificare che funzionino nel piano gratuito
- Ricordati di riavviare l’applicazione web dopo modifiche al codice o alle variabili d’ambiente
- Usa l’ambiente virtuale per gestire le dipendenze
- Controlla regolarmente i log dell’applicazione per eventuali errori
Conclusione
PythonAnywhere è un ottimo servizio per ospitare rapidamente applicazioni Python, incluse quelle che utilizzano API esterne come OpenAI. Il piano gratuito è più che sufficiente per progetti personali, siti dimostrativi o progetti in fase iniziale.

Leave a comment