You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从源码安装Wagtail时遇TypeError:期望字符串或字节类对象

本地构建Wagtail源码时执行setup脚本报错:TypeError: expected string or bytes-like object

我是Wagtail新手,想参与开源贡献,但本地从源码构建时,执行setup脚本(mysetup.py)多次失败,最终触发如下报错,核心错误为 TypeError: expected string or bytes-like object:

Traceback (most recent call last):
  File "/mnt/d_drive/var_docs_complements/open-source-contribs/wagtail/./mysetup.py", line 81, in <module>
    setup(
  File "/home/ainaf/.local/lib/python3.10/site-packages/setuptools/__init__.py", line 102, in setup
    _install_setup_requires(attrs)
  File "/home/ainaf/.local/lib/python3.10/site-packages/setuptools/__init__.py", line 70, in _install_setup_requires
    dist = MinimalDistribution(attrs)
  File "/home/ainaf/.local/lib/python3.10/site-packages/setuptools/__init__.py", line 52, in __init__
    super().__init__(filtered)
  File "/home/ainaf/.local/lib/python3.10/site-packages/setuptools/dist.py", line 297, in __init__
    for ep in metadata.entry_points(group='distutils.setup_keywords'):
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 1021, in entry_points
    return SelectableGroups.load(eps).select(**params)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 459, in load
    ordered = sorted(eps, key=by_group)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 1018, in <genexpr>
    eps = itertools.chain.from_iterable(
  File "/usr/lib/python3.10/importlib/metadata/_itertools.py", line 16, in unique_everseen
    k = key(element)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 943, in _normalized_name
    or super()._normalized_name
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 622, in _normalized_name
    return Prepared.normalize(self.name)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 871, in normalize
    return re.sub(r"[-_.]+", "-", name).lower().replace('-', '_')
  File "/usr/lib/python3.10/re.py", line 209, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object

我试过用GitHub Codespace可以正常构建,但希望能在本地完成,已经搜索过解决方法但没找到有效方案。


解决建议

  • 升级setuptools版本:这个报错大多是Python 3.10与旧版setuptools不兼容导致的,先把setuptools升级到最新稳定版:

    pip install --upgrade setuptools
    
  • 重建干净的虚拟环境:如果使用了虚拟环境,可能存在残留依赖或损坏的包,删除旧环境重新创建:

    # 示例:删除名为wagtail-dev的虚拟环境(Linux/macOS)
    rm -rf wagtail-dev
    # 用Python 3.10创建新虚拟环境
    python3.10 -m venv wagtail-dev
    # 激活环境
    source wagtail-dev/bin/activate
    # Windows系统激活命令:wagtail-dev\Scripts\activate
    # 升级pip和setuptools
    pip install --upgrade pip setuptools
    # 用官方推荐的方式安装Wagtail开发依赖
    pip install -e .[testing,docs]
    
  • 检查并修复损坏的依赖包:用pip检查系统中是否有损坏的包,修复后再尝试构建:

    pip check
    

    如果输出有问题的包,执行pip install --force-reinstall <包名>重新安装该包。

  • 使用官方标准构建流程:不要使用自定义的mysetup.py,直接用Wagtail仓库根目录的官方脚本,优先用pip install -e .这种可编辑安装方式,而不是直接运行setup.py。

内容的提问来源于stack exchange,提问作者Elias Finn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:37:37