Linux 下部署 `social-auto-upload` 遇到的问题及完整解决方案

social-auto-upload 是一个支持多平台(抖音、快手、小红书、Bilibili)的 Python 自动上传项目。在 Linux 环境下部署时,我遇到了很多坑,总结如下,希望能帮助其他同学快速搭建环境。


一、背景

我在 Ubuntu 22.04 / 20.04 下部署项目,目标是:

  • 使用 Python 虚拟环境隔离依赖
  • 安装项目依赖并使用 CLI 功能
  • 配置 Chromium 进行无头浏览器操作

在安装过程中遇到了以下问题:

  1. Python 版本兼容问题
  2. 虚拟环境创建失败
  3. f-string 报错
  4. Chromium 下载失败
  5. pip 安装依赖失败

二、Python 版本问题

问题:

  • 官方文档推荐 Python 3.7 或 3.8

  • Python 3.10:

    text 复制代码
    SyntaxError: f-string expression part cannot include a backslash
  • Python 3.7:

    text 复制代码
    ERROR: Could not find a version that satisfies the requirement setuptools>=69
    • 原因:最新 setuptools 不支持 Python 3.7

解决方案:

  • 使用 Python 3.8
  • 修改源码中 f-string 语法:
python 复制代码
# 安全写法
text_clean = all_text.strip().replace('\n', ' ')
xiaohongshu_logger.debug(_msg("🔑 ", f"预览区域内容: {text_clean}"))
  • 原理:f-string 内不要直接写 \ 或表达式,先赋值再用

三、虚拟环境创建失败

问题:

text 复制代码
The virtual environment was not created successfully because ensurepip is not available

解决方案:

bash 复制代码
sudo apt update
sudo apt install python3.8 python3.8-venv python3.8-distutils -y
python3.8 -m venv venv
source venv/bin/activate
  • 激活后命令行前缀显示 (venv)
  • pip 安装、CLI 命令都在虚拟环境中执行

四、依赖安装失败

问题:

  • 执行:
bash 复制代码
pip install -e .

报错:

text 复制代码
subprocess-exited-with-error
Could not find a version that satisfies the requirement setuptools>=69

解决方案:

  • 使用 Python 3.8 虚拟环境
  • 升级 pip:
bash 复制代码
pip install --upgrade pip
pip install -e .
  • 建议使用国内镜像加速:
bash 复制代码
pip install -i http://mirrors.tencent.com/pypi/simple --upgrade pip

五、Chromium 下载失败

问题:

  • patchright 下载 Chromium:
text 复制代码
Error: Download failed: server returned code 404
Error: read ECONNRESET
  • 原因:

    • 国内访问官方 CDN 不稳定
    • 部分版本在镜像中不存在

解决方案 1:使用国内镜像

bash 复制代码
PLAYWRIGHT_DOWNLOAD_HOST="https://npmmirror.com/mirrors/playwright" patchright install chromium

解决方案 2:手动下载

bash 复制代码
# 下载 Chromium
wget https://playwright.azureedge.net/builds/chromium/<version>/chrome-linux64.zip

# 解压到指定目录
sudo mkdir -p /opt/chrome-linux64
sudo unzip chrome-linux64.zip -d /opt/chrome-linux64

配置 conf.py

python 复制代码
# 指向 Chromium 可执行文件
LOCAL_CHROME_PATH = "/opt/chrome-linux64/chrome"
LOCAL_CHROME_HEADLESS = True
DEBUG_MODE = False

六、f-string 源码兼容性

  • 原本报错:
python 复制代码
xiaohongshu_logger.debug(_msg("🔑 ", f"预览区域内容: {all_text.strip().replace('\\n', ' ')}"))
  • 修复写法:
python 复制代码
text_clean = all_text.strip().replace('\n', ' ')
xiaohongshu_logger.debug(_msg("🔑 ", f"预览区域内容: {text_clean}"))

七、验证 CLI

激活虚拟环境后:

bash 复制代码
source venv/bin/activate

# 查看 CLI 帮助
sau --help

# 查看抖音子命令
sau douyin --help

输出正常即可使用各平台功能,例如上传视频、笔记等。


八、完整 Linux 安装命令示例

bash 复制代码
# 1. 安装 Python 3.8 和 venv
sudo apt update
sudo apt install python3.8 python3.8-venv python3.8-distutils -y

# 2. 克隆项目
git clone https://github.com/dreammis/social-auto-upload.git
cd social-auto-upload-main

# 3. 创建并激活虚拟环境
python3.8 -m venv venv
source venv/bin/activate

# 4. 升级 pip
pip install --upgrade pip

# 5. 安装项目依赖
pip install -e .

# 6. 手动下载 Chromium(替代 patchright 下载)
wget https://playwright.azureedge.net/builds/chromium/<version>/chrome-linux64.zip
sudo mkdir -p /opt/chrome-linux64
sudo unzip chrome-linux64.zip -d /opt/chrome-linux64

# 7. 修改 conf.py
# LOCAL_CHROME_PATH = "/opt/chrome-linux64/chrome"
# LOCAL_CHROME_HEADLESS = True
# DEBUG_MODE = False

# 8. 测试 CLI
sau --help
sau douyin --help

注:

  • <version> 替换成你下载的 Chromium 版本号
  • 确保 conf.py 中 LOCAL_CHROME_PATH 指向解压后的 chrome 可执行文件

九、总结

  • Linux 下部署 social-auto-upload 主要坑:

    1. Python 版本不兼容
    2. f-string 语法报错
    3. 虚拟环境依赖缺失
    4. Chromium 下载失败
    5. pip 依赖版本限制
  • 解决策略:

    • 使用 Python 3.8 虚拟环境
    • 修复 f-string 写法
    • 手动下载 Chromium 或使用国内镜像
    • 国内镜像加速 pip 安装依赖

通过以上方法,可以保证 social-auto-upload 在 Linux 下顺利运行。

相关推荐
古法老登瞎折腾8 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
琥珀.8 小时前
mysql中json数组转列表查询
linux·运维·服务器
dawnsky.liu9 小时前
在 RHEL 中使用 goose 实现远程主机管理
linux·运维·ai
Linux运维技术栈11 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
云边云科技_云网融合11 小时前
连锁门店组网怎么做?SD-WAN 多分支组网的架构选型、部署与成本结构
服务器·数据库·php
云上先途111 小时前
企业 AI 服务部署周期多久,会不会影响原有业务运转?
大数据·运维·人工智能
网络小江12 小时前
组网第35课:静态路由——下一跳、出接口、默认路由、浮动静态与黑洞路由
服务器·网络·默认路由·黑洞路由·浮动静态路由
执伞人ONLY12 小时前
AI知识库自动化知识加工没做对,人工整理永远追不上知识产生
运维·人工智能·自动化
slongzhang_12 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
叼烟扛炮12 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节