跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

PythonAnywhere 免费部署指南:Django/Flask/静态网站及平台对比

介绍 PythonAnywhere 免费部署方案,支持 Django、Flask、静态网站及定时脚本。包含主流免费平台对比及 Django 详细部署步骤,涵盖环境配置、虚拟环境创建、WSGI 设置及常见问题解决。免费版限制外部网络请求和 CPU 时间,适合个人学习与小型项目展示。

AiEngineer发布于 2026/3/28更新于 2026/7/2449 浏览
PythonAnywhere 免费部署指南:Django/Flask/静态网站及平台对比

前言

对于初学者,本地 Python 项目上线常面临服务器配置复杂等问题。本文介绍 PythonAnywhere 平台,支持多种项目类型,无需懂服务器即可部署。

一、先搞懂:PythonAnywhere 到底能部署啥?(免费版够用)

只要是轻量级 Python 相关项目,基本都能搭,关键是不用自己折腾服务器、不用花钱。

1. 核心场景 1:Python Web 框架(最常用)
✅ Django(本文重点)

适合复杂项目(博客、管理系统、电商雏形),免费版支持完整功能,包括数据库(SQLite)、静态文件、后台管理。

✅ Flask/FastAPI(轻量级首选)

比 Django 更简单,适合写小工具、API 接口、个人博客。部署步骤比 Django 还少,不用复杂配置。

极简部署步骤(以 Flask 为例): ① 本地写好 Flask 项目(含 app.py、requirements.txt),压缩成 ZIP; ② 上传到 PythonAnywhere,解压到 /home/[你的用户名]/[你的 Flask 项目名]; ③ 创建虚拟环境并安装依赖:pip install flask gunicorn; ④ Web 配置选「Manual configuration」,WSGI 文件改一行:from app import app as application; ⑤ 重启 Web 应用,访问 https://[你的用户名].pythonanywhere.com 直接用。

✅ Tornado(异步框架)

适合需要异步处理的场景(比如简单的实时通知),部署逻辑和 Flask 类似,免费版能满足小流量需求。

2. 核心场景 2:静态网站(零配置,5 分钟上线)

如果你只想搭个静态博客(比如用 Jekyll、Hugo、Hexo 生成的静态页),或者纯 HTML/CSS/JS 写的个人主页,PythonAnywhere 免费版也能搞定,而且不用虚拟环境、不用依赖安装。

部署步骤: ① 本地生成静态文件(比如 Hexo 执行 hexo generate 得到 public 文件夹); ② 压缩 public 文件夹为 static-site.zip,上传到 PythonAnywhere; ③ 解压到 /home/[你的用户名]/static-site; ④ Web 配置选「Manual configuration」,然后在「Web」页面找到「Static files」,添加:

  • URL 填 /(根路径),Directory 填 /home/[你的用户名]/static-site; ⑤ 重启 Web 应用,直接访问域名就能看到静态页。
3. 核心场景 3:Python 脚本服务(定时任务、轻量 API)

如果你有个 Python 脚本想长期运行(比如每天定时爬数据、生成报表),或者想把脚本改成 API 供别人调用,免费版也能实现。

例:定时运行脚本

① 上传脚本到 /home/[你的用户名]/scripts/[你的脚本名].py; ② 点击 PythonAnywhere 顶部「Consoles」→「Tasks」; ③ 选择「Scheduled task」,设置执行频率(每天、每周),命令填: workon [你的虚拟环境名] && python /home/[你的用户名]/scripts/[你的脚本名].py; ④ 保存后,脚本会按时间自动运行,还能看执行日志。

例:把脚本改成 API(用 FastAPI)

① 写个简单 FastAPI 脚本 api.py:

from fastapi import FastAPI

app = FastAPI()


 ():
     {: }
@app.get("/hello")
def
read_root
return
"msg"
"Hello from PythonAnywhere!"

② 部署步骤和 Flask 一致,WSGI 文件用 from api import app as application; ③ 访问 https://[你的用户名].pythonanywhere.com/hello,就能拿到 API 响应。

4. 其他支持场景(免费版够用)
  • 轻量级数据库:免费版支持 SQLite(文件型,不用配置),如果需要 MySQL/PostgreSQL,升级付费版后能直接在后台创建;
  • 简单的后端服务:比如配合前端 Vue/React 做后端接口,免费版能扛小流量(个人测试、小型 Demo 完全够)。

二、为什么选 PythonAnywhere?(主流免费平台对比)

市面上免费部署平台不少,但对 Python 新手来说,PythonAnywhere 是「性价比之王」——对 Python 项目友好、步骤简单、免费无时间限制。下面直接对比主流平台,优缺点一目了然:

对比维度PythonAnywhere(免费版)Heroku(免费版)Vercel/Netlify(免费版)Render(免费版)DigitalOcean App Platform(免费版)
Python 支持✅ 原生支持(Django/Flask 等)✅ 支持,但需配置 Procfile❌ 弱(仅支持静态 + Serverless,Python 后端麻烦)✅ 支持,配置比 Heroku 简单✅ 支持,但免费版仅 30 天
部署复杂度低(后台可视化配置,不用写配置文件)中(需写 Procfile,依赖管理麻烦)低(但仅适合静态 / 前端)中(需填路径,部分配置手动)中(界面稍复杂,新手需学习)
免费额度1 个 Web 应用,无时间限制5 个应用,但 2022 年后免费版取消,仅免费试用无限静态应用,Serverless 有额度限制1 个 Web 服务,1GB 存储,无时间限制30 天免费,之后收费
数据库支持✅ SQLite(免费),MySQL 需付费✅ 免费 MySQL(5MB,不稳定)❌ 不支持自建数据库✅ 免费 PostgreSQL(1GB)✅ 免费 PostgreSQL(1GB)
外部网络请求❌ 免费版不支持(无法调用第三方 API)✅ 支持✅ 支持(Serverless)✅ 支持✅ 支持
新手友好度⭐⭐⭐⭐⭐(文档全,步骤简单)⭐⭐⭐(需懂 Git、Procfile)⭐⭐⭐⭐(前端友好,后端弱)⭐⭐⭐(配置项多)⭐⭐(适合有基础的开发者)
结论:谁该选 PythonAnywhere?
  • ✅ 纯 Python 新手:不想折腾服务器,只想把 Django/Flask 项目上线看看效果;
  • ✅ 静态网站需求者:5 分钟搞定个人主页、博客,不用学复杂工具;
  • ✅ 脚本运行需求者:需要长期运行简单 Python 脚本,定时任务功能够用;
  • ❌ 不适合:需要调用第三方 API(免费版无网络)、项目流量大(免费版 CPU 有限)、非 Python 项目(比如 Node.js、Java)。

三、PythonAnywhere 免费部署 Django 实操(敏感信息模糊版)

前面说了这么多场景,这里重点放 Django 部署的清晰步骤,所有个人信息都用「[ ]」模糊,你直接替换成自己的内容即可。

1. 准备工作
  • 本地 Django 项目(确保 python manage.py runserver 能正常运行);
  • 生成 requirements.txt(本地执行 pip freeze > requirements.txt);
  • 浏览器(访问 PythonAnywhere)。
2. Step 1:注册 PythonAnywhere 免费账号
  1. 访问官网:PythonAnywhere,点击右上角「Sign Up」;
  2. 选「Beginner」(免费版),填写信息:
    • 用户名:[你的用户名](记牢!后续所有路径都要用);
    • 邮箱:[你的常用邮箱](需验证);
    • 密码:[你的密码](8 位以上,含字母 + 数字);
  3. 验证邮箱:打开邮件里的链接,激活账号后登录。
3. Step 2:本地项目配置修改(避坑关键)

打开本地项目的 settings.py(路径:[你的项目根目录]/[你的项目主文件夹]/settings.py),在末尾添加以下配置,区分本地和服务器环境:

import os
from pathlib import Path

# 项目根目录(原有配置,不用改)
BASE_DIR = Path(__file__).resolve().parent.parent

# ===================== 服务器环境(PythonAnywhere)=====================
if 'PYTHONANYWHERE_DOMAIN' in os.environ:
    # 1. 允许访问的域名(PythonAnywhere 分配的固定域名)
    ALLOWED_HOSTS = ['[你的用户名].pythonanywhere.com']
    # 2. 禁用 DEBUG 模式(避免泄露敏感信息)
    DEBUG = False
    # 3. 静态文件配置(核心!不然样式会丢)
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    # 服务器收集静态文件的目标目录
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static'),  # 本地自定义静态文件目录(手动创建)
    ]
    # 4. 媒体文件配置(用户上传的图片、文件)
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    # 媒体文件存放路径
    # 5. 数据库配置(免费版仅支持 SQLite,不用额外装)
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }

# ===================== 本地开发环境=====================
else:
    ALLOWED_HOSTS = []
    DEBUG = True
    # 本地数据库配置(比如 MySQL,保持你原来的就行)
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '[你的本地数据库名]',
            'USER': '[你的本地数据库用户名]',
            'PASSWORD': '[你的本地数据库密码]',
            'HOST': 'localhost',
            'PORT': '3306',
        }
    }

避坑提醒:

  • STATICFILES_DIRS 里只能放「你手动存静态文件的目录」(比如 static),绝对不能包含 STATIC_ROOT(会触发 staticfiles.E002 错误);
  • 免费版不支持 MySQL,别忘把服务器环境的数据库改成 SQLite。
4. Step 3:上传项目到 PythonAnywhere(无 Git 方式)
① 本地压缩项目

把本地 Django 项目根目录(含 manage.py、requirements.txt)压缩成 ZIP 包,命名为 [你的项目名].zip。

② 服务器上传 + 解压
  1. 登录 PythonAnywhere,点击顶部「Files」(文件管理器);
  2. 左侧目录默认在 /home/[你的用户名]/(你的用户根目录),点击「Upload a file」,选择本地的 [你的项目名].zip;
  3. 上传完成后,打开「Bash 控制台」(顶部「Consoles」→「Bash」);
  4. 验证:执行 ls [你的项目名],能看到 manage.py、requirements.txt 就对了。

执行解压命令(替换 [你的项目名]):

cd ~
unzip [你的项目名].zip
5. Step 4:创建并激活虚拟环境

虚拟环境能隔离项目依赖,避免冲突,步骤超简单:

  1. 激活验证:命令行前缀会出现 ([你的虚拟环境名]),表示已自动激活;

后续手动激活(关闭控制台后):

workon [你的虚拟环境名]

在 Bash 控制台执行(Python 版本选 3.8+,和本地一致):

mkvirtualenv --python=/usr/bin/python3.10 [你的虚拟环境名]  # 比如:django-venv
6. Step 5:安装项目依赖
  1. 验证:执行 pip list,能看到 Django 就说明安装成功。

安装依赖(用 requirements.txt 自动安装):

pip install -r requirements.txt

进入项目根目录:

cd /home/[你的用户名]/[你的项目名]
7. Step 6:配置 Web 应用(核心步骤)
① 新建 Web 应用
  1. 点击顶部「Web」→ 绿色按钮「Add a new web app」;
  2. 选「Manual configuration」(手动配置,避免模板冲突)→ 点击「Next」;
  3. 选 Python 版本(和虚拟环境一致,比如 Python 3.10)→ 点击「Next」。
② 配置项目路径和虚拟环境

在 Web 配置页面,修改 2 个关键路径:

Virtualenv(虚拟环境路径):

/home/[你的用户名]/.virtualenvs/[你的虚拟环境名]

(注:.virtualenvs 是隐藏文件夹,在文件管理器勾选「Show hidden files」才能看到)

Source code(项目根目录):

/home/[你的用户名]/[你的项目名]
③ 修改 WSGI 文件(服务器和 Django 通信的桥梁)
  1. 在 Web 配置页面找到「WSGI configuration file」,点击蓝色的文件路径(比如 /var/www/[你的用户名]_pythonanywhere_com_wsgi.py);
  2. 点击右上角「Save」保存。

清空原有内容,粘贴以下代码(替换 3 处信息):

import os
import sys

# 1. 项目根目录路径(替换成你的)
project_path = '/home/[你的用户名]/[你的项目名]'
if project_path not in sys.path:
    sys.path.insert(0, project_path)

# 2. Django 配置模块(替换成你的项目主文件夹名)
os.environ['DJANGO_SETTINGS_MODULE'] = '[你的项目主文件夹].settings'

# 3. 标记为服务器环境(对应 settings.py 中的判断)
os.environ['PYTHONANYWHERE_DOMAIN'] = 'True'

# 加载 Django WSGI 应用
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
8. Step 7:配置静态文件和媒体文件
① 创建文件夹(若不存在)
  1. 在文件管理器进入项目根目录 /home/[你的用户名]/[你的项目名];
  2. 点击「New directory」,分别创建 static(本地静态文件)和 media(用户上传文件)文件夹。
② 配置静态文件路径

在 Web 配置页面找到「Static files」,点击「Add a new static file」,添加 2 条配置:

URL 路径服务器目录(Directory)作用
/static//home/[你的用户名]/[你的项目名]/staticfiles服务器静态文件目录
/media//home/[你的用户名]/[你的项目名]/media用户上传文件目录

添加后点击「Save」。

9. Step 8:数据库迁移 + 创建管理员账号

收集静态文件(把 static 里的文件复制到 staticfiles):

python manage.py collectstatic

按 y 确认,看到「X static files copied」就完成了。

创建管理员账号(登录 Django 后台 /admin 用):

python manage.py createsuperuser

按提示输入:用户名(比如 admin)、邮箱(随便填)、密码(输入时不显示,输完回车),确认后按 y。

执行数据库迁移(创建 SQLite 表):

python manage.py migrate

看到 Applying ... OK 就成功了。

回到 Bash 控制台,确保虚拟环境已激活,进入项目根目录:

workon [你的虚拟环境名]
cd /home/[你的用户名]/[你的项目名]
10. Step 9:重启 Web 应用,访问项目!
  1. 回到 Web 配置页面,点击绿色的「Reload [你的用户名].pythonanywhere.com」按钮;
  2. 等待 1-2 秒,提示「Web app reloaded successfully」就重启成功了;
  3. 访问项目:在浏览器输入 https://[你的用户名].pythonanywhere.com,能看到本地项目的首页就说明部署成功!
  4. 访问后台:输入 https://[你的用户名].pythonanywhere.com/admin,用刚才创建的管理员账号登录。

四、免费版常见问题 + 解决方案(新手必看)

1. 问题 1:访问项目显示「500 Internal Server Error」
  • 原因:配置错误(WSGI 文件、数据库、静态文件都可能);
  • 解决:查看错误日志 ——Web 配置页面找到「Error log」,点击查看最新错误。 比如日志显示「ModuleNotFoundError: No module named 'xxx'」,就是依赖没装,重新执行 pip install xxx; 显示「DatabaseError」,就是迁移没执行,重新跑 python manage.py migrate。
2. 问题 2:静态文件不显示,页面没样式
  • 原因 1:没执行 collectstatic,或者 STATIC_ROOT 配置错了;
  • 解决:重新执行 python manage.py collectstatic,检查 STATIC_ROOT 路径是否和 Web 静态配置一致;
  • 原因 2:Web 静态文件的 URL 和目录不匹配;
  • 解决:确保「Static files」里的 URL 是 /static/,目录是 STATIC_ROOT 路径(/home/[你的用户名]/[你的项目名]/staticfiles)。
3. 问题 3:数据库报错「Can't connect to MySQL」
  • 原因:免费版不支持 MySQL,settings.py 没切换到 SQLite;
  • 解决:回到 Step 2,确认服务器环境的数据库配置是 SQLite,重新上传 settings.py 并重启应用。
4. 问题 4:免费版提示「CPU 时间不足」
  • 原因:项目流量过大,或脚本执行时间太长;
  • 解决:关闭不必要的后台进程,简化脚本逻辑,或者等第二天(免费版每天重置 CPU 额度)。

五、PythonAnywhere 免费版小技巧(提升体验)

  1. 延期技巧:免费账户每 3 个月会过期,到期前登录,在 Web 页面会有「Extend」按钮,点击就能续期,无限续下去没问题;
  2. 定时任务:想让脚本每天跑一次?用「Tasks」功能(顶部「Consoles」→「Tasks」),设置执行时间和命令就行;
  3. 文件管理:后续修改本地代码,不用重新传整个项目 —— 只压缩修改的文件(比如 views.py、settings.py),上传替换服务器对应文件,重启应用即可。

六、总结

PythonAnywhere 对 Python 新手来说,是「免费部署天花板」—— 不用学 Linux、不用买服务器、不用懂 Git,全程可视化操作 + 少量命令,就能把 Django/Flask/ 静态网站上线。虽然免费版有一些限制(无网络请求、CPU 有限),但对个人学习、小项目展示完全够用。

如果你的需求是「快速把 Python 项目上线看看效果」,选 PythonAnywhere 准没错;如果需要调用第三方 API 或更大流量,再考虑升级付费版或换 Render、DigitalOcean 等平台。

目录

  1. 前言
  2. 一、先搞懂:PythonAnywhere 到底能部署啥?(免费版够用)
  3. 1. 核心场景 1:Python Web 框架(最常用)
  4. ✅ Django(本文重点)
  5. ✅ Flask/FastAPI(轻量级首选)
  6. ✅ Tornado(异步框架)
  7. 2. 核心场景 2:静态网站(零配置,5 分钟上线)
  8. 3. 核心场景 3:Python 脚本服务(定时任务、轻量 API)
  9. 例:定时运行脚本
  10. 例:把脚本改成 API(用 FastAPI)
  11. 4. 其他支持场景(免费版够用)
  12. 二、为什么选 PythonAnywhere?(主流免费平台对比)
  13. 结论:谁该选 PythonAnywhere?
  14. 三、PythonAnywhere 免费部署 Django 实操(敏感信息模糊版)
  15. 1. 准备工作
  16. 2. Step 1:注册 PythonAnywhere 免费账号
  17. 3. Step 2:本地项目配置修改(避坑关键)
  18. 项目根目录(原有配置,不用改)
  19. ===================== 服务器环境(PythonAnywhere)=====================
  20. ===================== 本地开发环境=====================
  21. 4. Step 3:上传项目到 PythonAnywhere(无 Git 方式)
  22. ① 本地压缩项目
  23. ② 服务器上传 + 解压
  24. 5. Step 4:创建并激活虚拟环境
  25. 6. Step 5:安装项目依赖
  26. 7. Step 6:配置 Web 应用(核心步骤)
  27. ① 新建 Web 应用
  28. ② 配置项目路径和虚拟环境
  29. ③ 修改 WSGI 文件(服务器和 Django 通信的桥梁)
  30. 1. 项目根目录路径(替换成你的)
  31. 2. Django 配置模块(替换成你的项目主文件夹名)
  32. 3. 标记为服务器环境(对应 settings.py 中的判断)
  33. 加载 Django WSGI 应用
  34. 8. Step 7:配置静态文件和媒体文件
  35. ① 创建文件夹(若不存在)
  36. ② 配置静态文件路径
  37. 9. Step 8:数据库迁移 + 创建管理员账号
  38. 10. Step 9:重启 Web 应用,访问项目!
  39. 四、免费版常见问题 + 解决方案(新手必看)
  40. 1. 问题 1:访问项目显示「500 Internal Server Error」
  41. 2. 问题 2:静态文件不显示,页面没样式
  42. 3. 问题 3:数据库报错「Can't connect to MySQL」
  43. 4. 问题 4:免费版提示「CPU 时间不足」
  44. 五、PythonAnywhere 免费版小技巧(提升体验)
  45. 六、总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • MATLAB GUI 实现多算法雷达 CFAR 检测与可视化分析
  • MCP、Agent、Skills:AI 时代三大核心概念深度解析
  • Java 后端向前端推送消息
  • OpenClaw 接入飞书机器人与 Kimi2.5 配置指南
  • Java Swing 实现的个人所得税计算模拟器源码分享
  • Quartus Prime FPGA 开发新手入门指南
  • KoboldAI 安装与配置指南
  • iOS 设备运行 Minecraft Java 版:PojavLauncher 部署与性能优化指南
  • Linux 进程概念
  • 基于采样的 MPC 控制 MPPI 算法及 ROS C++ Python 仿真
  • 大模型的上游与下游:AI 流水线全貌解析
  • AI伴侣情感依赖与社会影响调查报告
  • SecureCRT 9.1.0 安装与基础配置指南
  • Matlab Copilot_AI 工具箱:对接多款 AI 大模型辅助编程
  • KrLongAI 旗博士本地部署 AI 数字人口播视频自动化工程
  • 基于 OpenClaw 构建 AI 自主模拟炒股系统全流程
  • 常见漏洞扫描工具及 Nmap 使用指南
  • Qwen3 + Qwen Agent 智能体开发实战:接入 MCP 工具指南
  • 前端实时数据刷新方案:WebSocket、轮询与后台同步
  • AI Agent 底层逻辑、工具链选型与代码实现

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online