Docker 在 Apple M1 上构建 python 应用程序错误 "No matching distribution found for spacy==2.3.2"

Docker build python app error "No matching distribution found for spacy==2.3.2" on Apple M1

我最近切换到 Mac 迷你 M1,并且正在尝试 运行 一个在我的旧英特尔 MBP 中 运行 正常的项目。因为项目使用node@10,所以我改用Rosetta2,但即使使用Rosetta2,其中一个docker构建仍然出错。

失败的Dockerfile(为了简洁省略了一些行)

FROM python:3.8

ADD requirements.txt /

RUN pip install -r requirements.txt

requirements.txt(省略了一些我认为无关的packages/lines)

blis==0.4.1
spacy==2.3.2

当尝试使用 docker-compose 构建它时,我得到(为了便于阅读省略了一些堆栈跟踪和格式化):

ERROR: Command errored out with exit status 1:

    /usr/local/bin/python -u -c 'import sys, setuptools, tokenize;
    sys.argv[0] = '"'"'/tmp/pip-install-a0pf23u9/blis_b27be89cc1164feb9077684e8666c831/setup.py'"'"';
    __file__='"'"'/tmp/pip-install-a0pf23u9/blis_b27be89cc1164feb9077684e8666c831/setup.py'"'"';
    f=getattr(tokenize, '"'"'open'"'"', open)(__file__);
    code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');
    f.close();

    exec(compile(code, __file__, '"'"'exec'"'"'))' install
        --record /tmp/pip-record-5h72yjx8/install-record.txt
        --single-version-externally-managed
        --prefix /tmp/pip-build-env-84ng6en9/overlay
        --compile
        --install-headers /tmp/pip-build-env-84ng6en9/overlay/include/python3.8/blis

    Check the logs for full command output.

#9 113.4   WARNING: You are using pip version 21.0.1; however, version 21.1 is available.
#9 113.4   You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
#9 113.4   ----------------------------------------
#9 113.4 WARNING:
    Discarding https://files.pythonhosted.org/packages/18/db/499f374339b522b6618234b93f25d2990692795ccce3152519ccc508586c/spacy-2.3.2.tar.gz#sha256=818de26e0e383f64ccbe3db185574920de05923d8deac8bbb12113b9e33cee1f
    (from https://pypi.org/simple/spacy/) (requires-python:!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7).
    Command errored out with exit status 1:

        /usr/local/bin/python /usr/local/lib/python3.8/site-packages/pip install
            --ignore-installed
            --no-user
            --prefix /tmp/pip-build-env-84ng6en9/overlay
            --no-warn-script-location
            --no-binary :none:
            --only-binary :none:
            -i https://pypi.org/simple
            -- setuptools wheel 'cython>=0.25' 'cymem>=2.0.2,<2.1.0' 'preshed>=3.0.2,<3.1.0' 'murmurhash>=0.28.0,<1.1.0' thinc==7.4.1
            
    Check the logs for full command output.

#9 113.4 ERROR: Could not find a version that satisfies the requirement spacy==2.3.2
#9 113.4 ERROR: No matching distribution found for spacy==2.3.2

Run pip install ... 行之前,我尝试添加:

知道哪里出了问题,或者这里有什么解决方案吗?


更新: 尝试使用 arm64 在终端中构建上述 Dockerfile(初始版本),但仍然出现相同的错误。


更新 2: 尝试碰撞(次要)blis & spacy 包,仍然失败并出现相同的错误。

作为最后的手段,我将需求文件中的所有包都升级到了最新版本,现在构建成功了。