You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现GitHub项目改动后自动同步更新至PythonAnywhere?

嘿,作为GitHub新手想搞定PythonAnywhere和GitHub的自动同步完全不用慌!我一步步给你捋清楚,都是超级好上手的操作~

第一步:先让PythonAnywhere项目和GitHub仓库建立关联

不管你是刚在GitHub建了仓库,还是已经有本地项目,先确保两边能连上:

  • 如果还没在PythonAnywhere上拉取过你的GitHub项目:
    打开PythonAnywhere的Bash终端,输入下面的命令(记得替换成你的用户名和仓库信息):
    cd /home/你的用户名/你的项目文件夹
    git clone https://github.com/你的GitHub用户名/你的仓库名.git .
    
    (末尾的.很重要,能把仓库内容直接克隆到当前文件夹,不会多出来一层子目录)
  • 如果已经在PythonAnywhere有项目了,想关联到GitHub仓库:
    同样打开Bash终端,执行这些命令:
    cd /home/你的用户名/你的项目文件夹
    git init
    git remote add origin https://github.com/你的GitHub用户名/你的仓库名.git
    git add .
    git commit -m "初始提交:关联PythonAnywhere项目到GitHub"
    git push -u origin main
    
    (如果你的GitHub仓库主分支是master,就把命令里的main改成master
第二步:定时自动拉取更新(新手首选)

这个方法最简单,不用折腾复杂的配置,让PythonAnywhere定时帮你从GitHub拉取最新代码:

  1. 登录PythonAnywhere,点击顶部导航栏的Tasks选项卡。
  2. 点击Create a new task按钮。
  3. Command输入框里,填入拉取代码的命令(还是要替换成你的路径和分支名):
    cd /home/你的用户名/你的项目文件夹 && git pull origin main
    
  4. 选择任务执行频率——比如每小时一次(Hourly),或者根据你的需求选每天(Daily)、每周(Weekly)都可以。
  5. 点击Create保存任务就搞定啦!

之后PythonAnywhere就会按照你设置的时间,自动帮你同步GitHub上的最新代码。要是想看看任务有没有成功,直接在Tasks页面看日志就行,失败了也能看到错误信息方便排查。

进阶:实时同步(GitHub一提交就更新)

如果你不想等定时任务,想要代码一推到GitHub就立刻同步到PythonAnywhere,可以用Webhook实现:

  1. 先在你的PythonAnywhere项目里写个简单的Web服务脚本,比如叫webhook.py(用Flask举例,如果你用Django也可以类似实现):
    from flask import Flask, request
    import subprocess
    
    app = Flask(__name__)
    
    @app.route('/github-webhook', methods=['POST'])
    def handle_webhook():
        # 新手可以先跳过密钥验证,之后再补(避免恶意请求触发更新)
        subprocess.run(['git', 'pull', 'origin', 'main'], cwd='/home/你的用户名/你的项目文件夹')
        return '更新成功!', 200
    
    if __name__ == '__main__':
        app.run()
    
  2. 在PythonAnywhere上把这个脚本部署成Web app:按照平台的Flask部署步骤来,选择Flask框架,设置好代码路径和启动文件就行。
  3. 打开GitHub仓库的Settings -> Webhooks -> Add webhook
    • Payload URL里填入你的PythonAnywhere Web app地址 + /github-webhook(比如https://你的用户名.pythonanywhere.com/github-webhook
    • Content type选择application/json
    • 点击Add webhook完成设置

之后你每次往GitHub推代码,PythonAnywhere就会立刻收到通知并拉取最新代码啦!不过记得后期最好加上密钥验证(GitHub的Webhook可以设置Secret,然后在你的脚本里验证请求签名),避免别人随便触发更新。

新手必看注意事项
  • 如果你的GitHub仓库是私有的,需要在PythonAnywhere上生成SSH密钥,然后把公钥添加到GitHub的SSH Keys里,这样拉取代码时不用输密码。
  • 如果拉取代码时遇到冲突,说明PythonAnywhere上有本地修改没提交,先执行git stash暂存本地修改,拉取完成后再用git stash pop恢复修改就行。
  • 定时任务的日志是排查问题的好帮手,要是任务失败了,直接去Tasks页面看日志找原因。

内容的提问来源于stack exchange,提问作者manisha katariya

火山引擎 最新活动