零门槛!PythonAnywhere 免费部署全指南:不止 Django,这些项目都能搭(附主流平台对比)

零门槛!PythonAnywhere 免费部署全指南:不止 Django,这些项目都能搭(附主流平台对比)

前言

作为刚入门的开发者,你是不是也遇到过这些痛点?想把本地写好的 Python 项目上线,却被服务器配置、Linux 命令搞得头大;试了几个平台,要么免费版限制多到没法用,要么步骤复杂到半途放弃……

今天给大家推荐一个 新手友好、完全免费、无需懂服务器 的神器 ——PythonAnywhere。它不仅能轻松部署 Django,还支持 Flask、静态网站等多种项目,全程鼠标点一点 + 少量命令就能搞定。本文会模糊所有个人敏感信息,带你从 0 到 1 掌握部署,还会对比市面上主流免费平台,帮你选对最适合的工具。

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

很多人以为 PythonAnywhere 只能部署 Django,其实它的免费版能力远超想象!只要是轻量级 Python 相关项目,基本都能搭,关键是 不用自己折腾服务器、不用花钱

1. 核心场景 1:Python Web 框架(最常用)

✅ Django(本文重点)

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

✅ Flask/FastAPI(轻量级首选)

比 Django 更简单,适合写小工具、API 接口、个人博客。部署步骤比 Django 还少,不用复杂配置。
极简部署步骤(以 Flask 为例):
① 本地写好 Flask 项目(含 app.pyrequirements.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

python

运行

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),在末尾添加以下配置,区分本地和服务器环境

python

运行

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.pyrequirements.txt)压缩成 ZIP 包,命名为 [你的项目名].zip

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

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

cd ~ # 进入用户根目录 unzip [你的项目名].zip # 解压后生成 [你的项目名] 文件夹 

5. Step 4:创建并激活虚拟环境

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

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

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

workon [你的虚拟环境名] 

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

mkvirtualenv --python=/usr/bin/python3.10 [你的虚拟环境名] # 比如:django-venv 

6. Step 5:安装项目依赖

  1. 验证:执行 pip list,能看到 Django 就说明安装成功。

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

pip install -r requirements.txt 

进入项目根目录:bash

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(虚拟环境路径):plaintext

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


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

Source code(项目根目录):plaintext

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

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

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):bash

python manage.py collectstatic 


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

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

python manage.py createsuperuser 


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

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

python manage.py migrate 


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

回到 Bash 控制台,确保虚拟环境已激活,进入项目根目录: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.pysettings.py),上传替换服务器对应文件,重启应用即可。

六、总结

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

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

赶紧动手试试吧,把你的项目从本地搬到网上,成就感满满!

Could not load content