Loading...
Loading...
Deploy a Flask/WSGI app to PythonAnywhere free tier — automates webapp creation, code upload, WSGI config, reload, E2E test via MCP. Only CLI tool install needs user's Bash console.
npx skill4agent add hoangsoft90/ai_skills deploy-pythonanywhereappfrom app import appofficecli# 1. pip install extras (if requirements.txt has packages beyond system site-packages)
pip install --user -r /home/<username>/<app-name>/requirements.txt
# 2. CLI tools (if app shells out to any)
curl -fsSL <install-url> | bashpip install--versionupload_directory(
local_dir_path="<local-app-dir>",
remote_dir_path="/home/<username>/<app-name>"
)delete_path("/home/<username>/<app-name>/__pycache__")tree("/home/<username>/<app-name>")__pycache__upload_text_fileupload_text_file(
dest_path="/home/<username>/<app-name>/flask_app.py",
content="""
import os, sys
os.environ["PATH"] = os.path.expanduser("~/.local/bin") + os.pathsep + os.environ.get("PATH", "")
sys.path.insert(0, os.path.expanduser("~/<app-name>"))
from app import app as application
"""
)~/.local/binsys.path.insertas applicationread_file_or_directorycreate_webapp(
domain="<username>.pythonanywhere.com",
python_version="3.12",
virtualenv_path="", # empty — use system Python
project_path="/home/<username>/<app-name>"
)get_webapp_infosource_directorypatch_webapp(
domain="<username>.pythonanywhere.com",
data={"source_directory": "/home/<username>/<app-name>"}
)get_webapp_infosource_directoryreload_webapp(domain="<username>.pythonanywhere.com")curl GET https://<user>.pythonanywhere.com/curl GETcurl -s -w "\nHTTP:%{http_code} TIME:%{time_total}" \
--max-time 300 \
-X POST -F "file=@<source-file>" \
"https://<user>.pythonanywhere.com/<endpoint>" \
-o /tmp/pa_result.xlsxread_file_or_directory("/var/log/<user>.pythonanywhere.com.error.log")TemporaryDirectoryTemporaryDirectory.__exit__OSError: [Errno 39] Directory not emptytempfile.mkdtemp()shutil.rmtree(ignore_errors=True)finallysend_file(io.BytesIO(result_bytes))__pycache__.pycdelete_path(__pycache__)reload_webappsend_filebytesAttributeErrorio.BytesIO()upload_directorydelete_path(__pycache__)reload_webapp