Builds are suddenly failing with no change from me

I have a website that uses a static site generator written in Swift, and also some Python code and dependencies. This all used to work just fine, the last successful build was on January 22. Today I made a textual change to my website (nothing else) and suddenly the build is failing:

Python exception: No module named 'PIL'

Successful build: Netlify App
Failing build: Netlify App

Full build log:

11:57:31 PM: Build ready to start
11:57:33 PM: build-image version: 6ebfb829398e07eb99ad5455777162ff19838822 (xenial)
11:57:33 PM: build-image tag: v3.10.5
11:57:33 PM: buildbot version: d0df77beca2ca61b1d04bd8011a622c1b1302d7c
11:57:34 PM: Fetching cached dependencies
11:57:34 PM: Failed to fetch cache, continuing with build
11:57:34 PM: Starting to prepare the repo for build
11:57:34 PM: No cached dependencies found. Cloning fresh repo
11:57:34 PM: git clone https://github.com/loopwerk/loopwerk.io
11:57:36 PM: Preparing Git Reference refs/heads/master
11:57:36 PM: Parsing package.json dependencies
11:57:37 PM: Different build command detected, going to use the one specified in the Netlify configuration file: 'swift run Loopwerk createArticleImages && npm install -g html-minifier && html-minifier --collapse-whitespace --input-dir deploy --file-ext html --output-dir deploy' versus 'swift run' in the Netlify UI
11:57:37 PM: Starting build script
11:57:37 PM: Installing dependencies
11:57:37 PM: Python version set to 3.7
11:57:38 PM: Downloading and installing node v10.24.1...
11:57:39 PM: Downloading https://nodejs.org/dist/v10.24.1/node-v10.24.1-linux-x64.tar.xz...
11:57:39 PM: Computing checksum with sha256sum
11:57:39 PM: Checksums matched!
11:57:42 PM: Now using node v10.24.1 (npm v6.14.12)
11:57:42 PM: Started restoring cached build plugins
11:57:42 PM: Finished restoring cached build plugins
11:57:42 PM: Attempting ruby version 2.6.2, read from environment
11:57:43 PM: Using ruby version 2.6.2
11:57:44 PM: Using PHP version 5.6
11:57:44 PM: Installing pip dependencies
11:57:44 PM: Started restoring cached pip cache
11:57:44 PM: Finished restoring cached pip cache
11:57:46 PM: Collecting pillow
11:57:46 PM:   Downloading Pillow-9.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB)
11:57:46 PM: Installing collected packages: pillow
11:57:46 PM: Successfully installed pillow-9.0.1
11:57:47 PM: WARNING: You are using pip version 20.3.4; however, version 22.0.3 is available.
11:57:47 PM: You should consider upgrading via the '/opt/buildhome/python3.7/bin/python3.7 -m pip install --upgrade pip' command.
11:57:47 PM: Pip dependencies installed
11:57:47 PM: Attempting Swift version '5.5' from .swift-version
11:57:47 PM: Downloading https://download.swift.org/swift-5.5-release/ubuntu1604/swift-5.5-RELEASE/swift-5.5-RELEASE-ubuntu16.04.tar.gz
11:57:47 PM: /tmp/swiftenv-5.5- /opt/build/repo
11:57:47 PM:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
11:57:47 PM:                                  Dload  Upload   Total   Spent    Left  Speed
11:57:48 PM:   0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
11:57:49 PM:   1  542M    1 7671k    0     0  9715k      0  0:00:57 --:--:--  0:00:57 9710k
11:57:50 PM:   5  542M    5 28.9M    0     0  16.1M      0  0:00:33  0:00:01  0:00:32 16.1M
11:57:51 PM:  10  542M   10 55.0M    0     0  19.7M      0  0:00:27  0:00:02  0:00:25 19.7M
11:57:52 PM:  18  542M   18  101M    0     0  26.7M      0  0:00:20  0:00:03  0:00:17 26.7M
11:57:53 PM:  25  542M   25  136M    0     0  28.5M      0  0:00:18  0:00:04  0:00:14 28.5M
11:57:54 PM:  35  542M   35  191M    0     0  32.9M      0  0:00:16  0:00:05  0:00:11 36.6M
11:57:55 PM:  42  542M   42  232M    0     0  33.9M      0  0:00:15  0:00:06  0:00:09 40.2M
11:57:56 PM:  50  542M   50  275M    0     0  35.3M      0  0:00:15  0:00:07  0:00:08 44.1M
11:57:57 PM:  58  542M   58  317M    0     0  36.0M      0  0:00:15  0:00:08  0:00:07 43.0M
11:57:58 PM:  66  542M   66  362M    0     0  37.0M      0  0:00:14  0:00:09  0:00:05 45.0M
11:57:59 PM:  78  542M   78  427M    0     0  39.6M      0  0:00:13  0:00:10  0:00:03 47.4M
11:58:00 PM:  86  542M   86  467M    0     0  39.6M      0  0:00:13  0:00:11  0:00:02 47.5M
11:58:00 PM:  94  542M   94  512M    0     0  40.0M      0  0:00:13  0:00:12  0:00:01 47.3M
11:58:00 PM: 100  542M  100  542M    0     0  40.2M      0  0:00:13  0:00:13 --:--:-- 48.2M
11:58:19 PM: /opt/build/repo
11:58:20 PM: 5.5 has been installed.
11:58:20 PM: Using Swift version 5.5
11:58:20 PM: Building Swift Package
11:58:20 PM: Started restoring cached swift build
11:58:20 PM: Finished restoring cached swift build
11:58:22 PM: Fetching https://github.com/loopwerk/SagaSwimRenderer
11:58:22 PM: Fetching https://github.com/JohnSundell/Codextended.git
11:58:22 PM: Fetched https://github.com/loopwerk/SagaSwimRenderer (0.57s)
11:58:22 PM: Fetching https://github.com/loopwerk/Parsley
11:58:22 PM: Fetched https://github.com/JohnSundell/Codextended.git (0.59s)
11:58:22 PM: Fetching https://github.com/loopwerk/PathKit
11:58:23 PM: Fetched https://github.com/loopwerk/Parsley (0.58s)
11:58:23 PM: Fetching https://github.com/pvieito/PythonKit
11:58:23 PM: Fetched https://github.com/loopwerk/PathKit (0.75s)
11:58:23 PM: Fetching https://github.com/loopwerk/Saga
11:58:23 PM: Fetched https://github.com/pvieito/PythonKit (0.67s)
11:58:23 PM: Fetching https://github.com/loopwerk/SagaParsleyMarkdownReader
11:58:24 PM: Fetched https://github.com/loopwerk/Saga (0.72s)
11:58:24 PM: Fetching https://github.com/kylef/Spectre.git
11:58:24 PM: Fetched https://github.com/loopwerk/SagaParsleyMarkdownReader (0.51s)
11:58:24 PM: Fetching https://github.com/robb/Swim
11:58:24 PM: Fetched https://github.com/kylef/Spectre.git (0.62s)
11:58:24 PM: Fetching https://github.com/brokenhandsio/cmark-gfm.git
11:58:25 PM: Fetched https://github.com/robb/Swim (0.76s)
11:58:25 PM: Fetching https://github.com/scinfu/SwiftSoup
11:58:26 PM: Fetched https://github.com/scinfu/SwiftSoup (1.13s)
11:58:26 PM: Computing version for https://github.com/scinfu/SwiftSoup
11:58:26 PM: Fetched https://github.com/brokenhandsio/cmark-gfm.git (1.56s)
11:58:27 PM: Computed https://github.com/scinfu/SwiftSoup at 2.3.3 (1.40s)
11:58:27 PM: Computing version for https://github.com/pvieito/PythonKit
11:58:28 PM: Computed https://github.com/pvieito/PythonKit at 0.1.0 (0.32s)
11:58:28 PM: Computing version for https://github.com/loopwerk/SagaSwimRenderer
11:58:28 PM: Computed https://github.com/loopwerk/SagaSwimRenderer at 0.6.1 (0.41s)
11:58:28 PM: Computing version for https://github.com/loopwerk/SagaParsleyMarkdownReader
11:58:28 PM: Computed https://github.com/loopwerk/SagaParsleyMarkdownReader at 0.5.0 (0.35s)
11:58:28 PM: Computing version for https://github.com/loopwerk/Saga
11:58:29 PM: Computed https://github.com/loopwerk/Saga at 1.0.0 (0.34s)
11:58:29 PM: Computing version for https://github.com/robb/Swim
11:58:29 PM: Computed https://github.com/robb/Swim at 0.3.0 (0.31s)
11:58:29 PM: Computing version for https://github.com/loopwerk/Parsley
11:58:29 PM: Computed https://github.com/loopwerk/Parsley at 0.6.0 (0.30s)
11:58:29 PM: Computing version for https://github.com/JohnSundell/Codextended.git
11:58:30 PM: Computed https://github.com/JohnSundell/Codextended.git at 0.3.0 (0.29s)
11:58:30 PM: Computing version for https://github.com/loopwerk/PathKit
11:58:30 PM: Computed https://github.com/loopwerk/PathKit at 1.2.0 (0.32s)
11:58:30 PM: Computing version for https://github.com/brokenhandsio/cmark-gfm.git
11:58:30 PM: Computed https://github.com/brokenhandsio/cmark-gfm.git at 2.1.0 (0.28s)
11:58:30 PM: Computing version for https://github.com/kylef/Spectre.git
11:58:31 PM: Computed https://github.com/kylef/Spectre.git at 0.10.1 (0.29s)
11:58:31 PM: Creating working copy for https://github.com/robb/Swim
11:58:31 PM: Working copy of https://github.com/robb/Swim resolved at 0.3.0
11:58:31 PM: Creating working copy for https://github.com/brokenhandsio/cmark-gfm.git
11:58:31 PM: Working copy of https://github.com/brokenhandsio/cmark-gfm.git resolved at 2.1.0
11:58:31 PM: Creating working copy for https://github.com/pvieito/PythonKit
11:58:31 PM: Working copy of https://github.com/pvieito/PythonKit resolved at 0.1.0
11:58:31 PM: Creating working copy for https://github.com/loopwerk/Parsley
11:58:31 PM: Working copy of https://github.com/loopwerk/Parsley resolved at 0.6.0
11:58:31 PM: Creating working copy for https://github.com/loopwerk/SagaParsleyMarkdownReader
11:58:31 PM: Working copy of https://github.com/loopwerk/SagaParsleyMarkdownReader resolved at 0.5.0
11:58:31 PM: Creating working copy for https://github.com/kylef/Spectre.git
11:58:31 PM: Working copy of https://github.com/kylef/Spectre.git resolved at 0.10.1
11:58:31 PM: Creating working copy for https://github.com/loopwerk/Saga
11:58:31 PM: Working copy of https://github.com/loopwerk/Saga resolved at 1.0.0
11:58:31 PM: Creating working copy for https://github.com/JohnSundell/Codextended.git
11:58:32 PM: Working copy of https://github.com/JohnSundell/Codextended.git resolved at 0.3.0
11:58:32 PM: Creating working copy for https://github.com/loopwerk/PathKit
11:58:32 PM: Working copy of https://github.com/loopwerk/PathKit resolved at 1.2.0
11:58:32 PM: Creating working copy for https://github.com/loopwerk/SagaSwimRenderer
11:58:32 PM: Working copy of https://github.com/loopwerk/SagaSwimRenderer resolved at 0.6.1
11:58:32 PM: Creating working copy for https://github.com/scinfu/SwiftSoup
11:58:32 PM: Working copy of https://github.com/scinfu/SwiftSoup resolved at 2.3.3
11:58:47 PM: [1/89] Compiling SwiftSoup BinarySearch.swift
11:58:47 PM: [2/89] Compiling SwiftSoup BooleanAttribute.swift
11:58:48 PM: [3/89] Compiling SwiftSoup ArrayExt.swift
11:58:48 PM: [4/89] Compiling SwiftSoup Attribute.swift
11:58:48 PM: [5/89] Compiling SwiftSoup Attributes.swift
11:58:48 PM: [7/91] Merging module Swim
11:58:50 PM: [9/96] Compiling PythonKit NumpyConversion.swift
11:58:50 PM: [10/96] Compiling PythonKit Python.swift
11:58:50 PM: [11/96] Compiling PythonKit PythonLibrary+Symbols.swift
11:58:50 PM: [12/96] Compiling PythonKit PythonLibrary.swift
11:58:50 PM: [14/96] Compiling SwiftSoup CharacterExt.swift
11:58:50 PM: [15/96] Compiling SwiftSoup CharacterReader.swift
11:58:50 PM: [16/96] Compiling SwiftSoup Cleaner.swift
11:58:50 PM: [17/96] Compiling SwiftSoup Collector.swift
11:58:50 PM: [18/96] Compiling SwiftSoup CombiningEvaluator.swift
11:58:50 PM: [19/96] Compiling SwiftSoup Comment.swift
11:58:50 PM: [20/96] Compiling SwiftSoup Connection.swift
11:58:50 PM: [21/96] Compiling SwiftSoup CssSelector.swift
11:58:50 PM: [22/96] Compiling SwiftSoup DataNode.swift
11:58:50 PM: [23/96] Compiling SwiftSoup DataUtil.swift
11:58:50 PM: [24/96] Compiling SwiftSoup Document.swift
11:58:50 PM: [25/96] Compiling SwiftSoup DocumentType.swift
11:58:50 PM: [26/96] Compiling SwiftSoup Element.swift
11:58:50 PM: [27/96] Compiling SwiftSoup Elements.swift
11:58:52 PM: [33/116] Merging module PythonKit
11:58:54 PM: [35/118] Compiling SwiftSoup Entities.swift
11:58:54 PM: [36/118] Compiling SwiftSoup Evaluator.swift
11:58:54 PM: [37/118] Compiling SwiftSoup Exception.swift
11:58:54 PM: [38/118] Compiling SwiftSoup FormElement.swift
11:58:54 PM: [39/118] Compiling SwiftSoup HtmlTreeBuilder.swift
11:58:54 PM: [40/118] Compiling SwiftSoup HtmlTreeBuilderState.swift
11:58:54 PM: [41/118] Compiling SwiftSoup HttpStatusException.swift
11:58:54 PM: [42/118] Compiling SwiftSoup Node.swift
11:58:54 PM: [43/118] Compiling SwiftSoup NodeTraversor.swift
11:58:54 PM: [44/118] Compiling SwiftSoup NodeVisitor.swift
11:58:54 PM: [45/118] Compiling SwiftSoup OrderedSet.swift
11:58:54 PM: [46/118] Compiling SwiftSoup ParseError.swift
11:58:54 PM: [47/118] Compiling SwiftSoup ParseErrorList.swift
11:58:54 PM: [48/118] Compiling SwiftSoup ParseSettings.swift
11:58:54 PM: [49/118] Compiling SwiftSoup Parser.swift
11:58:54 PM: [50/118] Compiling SwiftSoup Pattern.swift
11:58:54 PM: [51/118] Compiling SwiftSoup QueryParser.swift
11:58:54 PM: [52/118] Compiling SwiftSoup SerializationException.swift
11:58:54 PM: [53/118] Compiling SwiftSoup SimpleDictionary.swift
11:58:55 PM: [54/118] Compiling PathKit PathKit.swift
11:58:55 PM: [56/120] Merging module PathKit
11:58:55 PM: [58/123] Compiling HTML Tag.swift
11:58:58 PM: [59/123] Compiling SwiftSoup StreamReader.swift
11:58:58 PM: [60/123] Compiling SwiftSoup String.swift
11:58:58 PM: [61/123] Compiling SwiftSoup StringBuilder.swift
11:58:58 PM: [62/123] Compiling SwiftSoup StringUtil.swift
11:58:58 PM: [63/123] Compiling SwiftSoup StructuralEvaluator.swift
11:58:58 PM: [64/123] Compiling SwiftSoup SwiftSoup.swift
11:58:58 PM: [65/123] Compiling SwiftSoup Tag.swift
11:58:58 PM: [66/123] Compiling SwiftSoup TextNode.swift
11:58:58 PM: [67/123] Compiling SwiftSoup Token.swift
11:58:58 PM: [68/123] Compiling SwiftSoup TokenQueue.swift
11:58:58 PM: [69/123] Compiling SwiftSoup Tokeniser.swift
11:58:58 PM: [70/123] Compiling SwiftSoup TokeniserState.swift
11:58:58 PM: [71/123] Compiling SwiftSoup TreeBuilder.swift
11:58:58 PM: [72/123] Compiling SwiftSoup UnicodeScalar.swift
11:58:58 PM: [73/123] Compiling SwiftSoup Validate.swift
11:58:58 PM: [74/123] Compiling SwiftSoup Whitelist.swift
11:58:58 PM: [75/123] Compiling SwiftSoup XmlDeclaration.swift
11:58:58 PM: [76/123] Compiling SwiftSoup XmlTreeBuilder.swift
11:58:58 PM: [78/125] Merging module SwiftSoup
11:58:59 PM: [80/127] Compiling Codextended Codextended.swift
11:58:59 PM: [82/129] Merging module Codextended
11:58:59 PM: [84/130] Compiling cmark xml.c
11:58:59 PM: [85/130] Compiling cmark utf8.c
11:59:02 PM: [86/143] Compiling Saga ProcessingStep.swift
11:59:02 PM: [87/143] Compiling Saga Reader+Decoder.swift
11:59:02 PM: [88/143] Compiling Saga Reader.swift
11:59:02 PM: [89/143] Compiling Saga Saga.swift
11:59:02 PM: [90/143] Compiling Saga String+Slugify.swift
11:59:02 PM: [91/143] Compiling Saga Writer.swift
11:59:02 PM: [92/143] Compiling Saga FileContainer.swift
11:59:02 PM: [93/143] Compiling Saga FileIO.swift
11:59:02 PM: [94/143] Compiling Saga Item.swift
11:59:02 PM: [95/143] Compiling Saga ItemWriteMode.swift
11:59:02 PM: [96/143] Compiling Saga MetadataDecoder.swift
11:59:02 PM: [97/143] Compiling Saga Paginator.swift
11:59:02 PM: [98/143] Compiling Saga Path+Extensions.swift
11:59:02 PM: [99/145] Merging module Saga
11:59:03 PM: [102/146] Compiling cmark tasklist.c
11:59:03 PM: [103/146] Compiling cmark tagfilter.c
11:59:03 PM: [104/146] Compiling cmark table.c
11:59:03 PM: [105/146] Compiling cmark syntax_extension.c
11:59:03 PM: [106/146] Compiling cmark strikethrough.c
11:59:03 PM: [107/146] Compiling cmark scanners.c
11:59:04 PM: [108/146] Compiling cmark render.c
11:59:04 PM: [109/146] Compiling cmark registry.c
11:59:04 PM: [110/146] Compiling cmark references.c
11:59:04 PM: [111/146] Compiling cmark plugin.c
11:59:04 PM: [112/146] Compiling cmark plaintext.c
11:59:04 PM: [113/146] Compiling cmark node.c
11:59:04 PM: [114/146] Compiling cmark map.c
11:59:04 PM: [115/146] Compiling cmark man.c
11:59:04 PM: [116/146] Compiling cmark linked_list.c
11:59:04 PM: [117/146] Compiling cmark latex.c
11:59:04 PM: [118/146] Compiling cmark iterator.c
11:59:05 PM: [119/146] Compiling cmark inlines.c
11:59:05 PM: [120/146] Compiling cmark html.c
11:59:05 PM: [121/146] Compiling cmark houdini_html_u.c
11:59:05 PM: [122/146] Compiling cmark houdini_html_e.c
11:59:05 PM: [123/146] Compiling cmark houdini_href_e.c
11:59:05 PM: [124/146] Compiling cmark footnotes.c
11:59:05 PM: [125/146] Compiling cmark ext_scanners.c
11:59:05 PM: [126/146] Compiling cmark core-extensions.c
11:59:05 PM: [127/146] Compiling cmark commonmark.c
11:59:05 PM: [128/146] Compiling cmark cmark_ctype.c
11:59:05 PM: [129/146] Compiling cmark cmark.c
11:59:05 PM: [130/146] Compiling cmark buffer.c
11:59:05 PM: [131/146] Compiling cmark blocks.c
11:59:06 PM: [132/146] Compiling cmark autolink.c
11:59:06 PM: [133/146] Compiling cmark arena.c
11:59:06 PM: [134/146] Wrapping AST for Swim for debugging
11:59:07 PM: [135/149] Compiling Parsley Document.swift
11:59:07 PM: [136/149] Compiling Parsley MarkdownOptions.swift
11:59:07 PM: [137/149] Compiling Parsley Parsley.swift
11:59:07 PM: [139/151] Merging module Parsley
11:59:07 PM: [141/152] Wrapping AST for SwiftSoup for debugging
11:59:07 PM: [142/153] Compiling SagaParsleyMarkdownReader SagaParsleyMarkdownReader.swift
11:59:08 PM: [144/155] Merging module SagaParsleyMarkdownReader
11:59:08 PM: [146/156] Wrapping AST for Saga for debugging
11:59:08 PM: [147/156] Wrapping AST for SagaParsleyMarkdownReader for debugging
11:59:08 PM: [148/156] Wrapping AST for PythonKit for debugging
11:59:08 PM: [149/156] Wrapping AST for PathKit for debugging
11:59:08 PM: [150/156] Wrapping AST for Parsley for debugging
11:59:08 PM: [151/156] Wrapping AST for Codextended for debugging
11:59:14 PM: [152/156] Compiling HTML Tags.swift
11:59:15 PM: [154/158] Merging module HTML
11:59:15 PM: [156/159] Wrapping AST for HTML for debugging
11:59:15 PM: [157/163] Compiling SagaSwimRenderer AtomFeed.swift
11:59:15 PM: [158/163] Compiling SagaSwimRenderer Node+Extensions.swift
11:59:15 PM: [159/163] Compiling SagaSwimRenderer SagaSwimRenderer.swift
11:59:15 PM: [160/163] Compiling SagaSwimRenderer String+Extensions.swift
11:59:16 PM: [162/165] Merging module SagaSwimRenderer
11:59:16 PM: [164/166] Wrapping AST for SagaSwimRenderer for debugging
11:59:18 PM: [165/178] Compiling Loopwerk RenderArticle.swift
11:59:18 PM: [166/178] Compiling Loopwerk RenderArticles.swift
11:59:18 PM: [167/178] Compiling Loopwerk RenderFeed.swift
11:59:18 PM: [168/178] Compiling Loopwerk RenderPage.swift
11:59:18 PM: [169/178] Compiling Loopwerk RenderProjects.swift
11:59:18 PM: [170/178] Compiling Loopwerk RenderTagFeed.swift
11:59:19 PM: [171/178] Compiling Loopwerk Array+Safe.swift
11:59:19 PM: [172/178] Compiling Loopwerk Extensions.swift
11:59:19 PM: [173/178] Compiling Loopwerk String+Extensions.swift
11:59:19 PM: [174/178] Compiling Loopwerk run.swift
11:59:19 PM: [175/178] Compiling Loopwerk BaseLayout.swift
11:59:19 PM: [176/178] Compiling Loopwerk RenderApps.swift
11:59:19 PM: [178/180] Merging module Loopwerk
11:59:19 PM: [180/181] Wrapping AST for Loopwerk for debugging
11:59:19 PM: [181/181] Linking Loopwerk
11:59:19 PM: [181/181] Build complete!
11:59:19 PM: Swift package Built
11:59:19 PM: Started restoring cached go cache
11:59:19 PM: Finished restoring cached go cache
11:59:19 PM: Installing Go version 1.12
11:59:24 PM: unset GOOS;
11:59:24 PM: unset GOARCH;
11:59:24 PM: export GOROOT='/opt/buildhome/.gimme_cache/versions/go1.12.linux.amd64';
11:59:24 PM: export PATH="/opt/buildhome/.gimme_cache/versions/go1.12.linux.amd64/bin:${PATH}";
11:59:24 PM: go version >&2;
11:59:24 PM: export GIMME_ENV="/opt/buildhome/.gimme_cache/env/go1.12.linux.amd64.env"
11:59:24 PM: go version go1.12 linux/amd64
11:59:24 PM: Installing missing commands
11:59:24 PM: Verify run directory
11:59:26 PM: ​
11:59:26 PM: ────────────────────────────────────────────────────────────────
11:59:26 PM:   Netlify Build                                                 
11:59:26 PM: ────────────────────────────────────────────────────────────────
11:59:26 PM: ​
11:59:26 PM: ❯ Version
11:59:26 PM:   @netlify/build 26.3.10
11:59:26 PM: ​
11:59:26 PM: ❯ Flags
11:59:26 PM:   baseRelDir: false
11:59:26 PM:   buildId: 62195edbfb66240007627249
11:59:26 PM:   deployId: 62195edbfb6624000762724b
11:59:26 PM: ​
11:59:26 PM: ❯ Current directory
11:59:26 PM:   /opt/build/repo
11:59:26 PM: ​
11:59:26 PM: ❯ Config file
11:59:26 PM:   /opt/build/repo/netlify.toml
11:59:26 PM: ​
11:59:26 PM: ❯ Context
11:59:26 PM:   production
11:59:26 PM: ​
11:59:26 PM: ────────────────────────────────────────────────────────────────
11:59:26 PM:   1. build.command from netlify.toml                            
11:59:26 PM: ────────────────────────────────────────────────────────────────
11:59:26 PM: ​
11:59:26 PM: $ swift run Loopwerk createArticleImages && npm install -g html-minifier && html-minifier --collapse-whitespace --input-dir deploy --file-ext html --output-dir deploy
11:59:29 PM: [1/1] Planning build
11:59:29 PM: [0/0] Build complete!
11:59:36 PM: PythonKit/Python.swift:674: Fatal error: 'try!' expression unexpectedly raised an error: Python exception: No module named 'PIL'
11:59:36 PM: Traceback:
11:59:36 PM:   File "/opt/build/repo/Sources/ImageGenerator/__init__.py", line 4, in <module>
11:59:36 PM:     from PIL import Image, ImageDraw, ImageFont
11:59:36 PM: Current stack trace:
11:59:36 PM: 0    libswiftCore.so                    0x00007f12dc35cec0 swift_reportError + 50
11:59:36 PM: 1    libswiftCore.so                    0x00007f12dc3d4e10 _swift_stdlib_reportFatalErrorInFile + 109
11:59:36 PM: 2    libswiftCore.so                    0x00007f12dc0e2ac2 <unavailable> + 1415874
11:59:36 PM: 3    libswiftCore.so                    0x00007f12dc0e27eb <unavailable> + 1415147
11:59:36 PM: 4    libswiftCore.so                    0x00007f12dc0e14d0 _assertionFailure(_:_:file:line:flags:) + 447
11:59:36 PM: 5    libswiftCore.so                    0x00007f12dc12ac90 swift_unexpectedError + 770
11:59:36 PM: 6    Loopwerk                           0x0000559a7e8cdc7f <unavailable> + 1961087
11:59:36 PM: 7    Loopwerk                           0x0000559a7e8818a1 <unavailable> + 1648801
11:59:36 PM: 8    Loopwerk                           0x0000559a7e87fad6 <unavailable> + 1641174
11:59:36 PM: 9    libswift_Concurrency.so            0x00007f12dcee55eb <unavailable> + 251371
11:59:36 PM: 10   libswift_Concurrency.so            0x00007f12dcee5ba0 swift_job_run + 72
11:59:36 PM: 11   libdispatch.so                     0x00007f12db42a7e6 <unavailable> + 190438
11:59:36 PM: 12   libdispatch.so                     0x00007f12db42b3f9 <unavailable> + 193529
11:59:36 PM: 13   libdispatch.so                     0x00007f12db432d42 <unavailable> + 224578
11:59:36 PM: 14   libpthread.so.0                    0x00007f12dba6a6ba <unavailable> + 30394
11:59:36 PM: 15   libc.so.6                          0x00007f12daf364b0 clone + 109
11:59:36 PM: bash: line 1:  3835 Illegal instruction     swift run Loopwerk createArticleImages
11:59:36 PM: ​
11:59:36 PM: ────────────────────────────────────────────────────────────────
11:59:36 PM:   "build.command" failed                                        
11:59:36 PM: ────────────────────────────────────────────────────────────────
11:59:36 PM: ​
11:59:36 PM:   Error message
11:59:36 PM:   Command failed with exit code 132: swift run Loopwerk createArticleImages && npm install -g html-minifier && html-minifier --collapse-whitespace --input-dir deploy --file-ext html --output-dir deploy
11:59:36 PM: ​
11:59:36 PM:   Error location
11:59:36 PM:   In build.command from netlify.toml:
11:59:36 PM:   swift run Loopwerk createArticleImages && npm install -g html-minifier && html-minifier --collapse-whitespace --input-dir deploy --file-ext html --output-dir deploy
11:59:36 PM: ​
11:59:36 PM:   Resolved config
11:59:36 PM:   build:
11:59:36 PM:     command: swift run Loopwerk createArticleImages && npm install -g html-minifier && html-minifier --collapse-whitespace --input-dir deploy --file-ext html --output-dir deploy
11:59:36 PM:     commandOrigin: config
11:59:36 PM:     environment:
11:59:36 PM:       - SWIFT_VERSION
11:59:36 PM:     publish: /opt/build/repo/deploy
11:59:36 PM:     publishOrigin: config
11:59:37 PM: Caching artifacts
11:59:37 PM: Started saving swift build
11:59:37 PM: Finished saving swift build
11:59:37 PM: Started saving build plugins
11:59:37 PM: Finished saving build plugins
11:59:37 PM: Started saving pip cache
11:59:37 PM: Finished saving pip cache
11:59:37 PM: Started saving emacs cask dependencies
11:59:37 PM: Finished saving emacs cask dependencies
11:59:37 PM: Started saving maven dependencies
11:59:37 PM: Finished saving maven dependencies
11:59:37 PM: Started saving boot dependencies
11:59:37 PM: Finished saving boot dependencies
11:59:37 PM: Started saving rust rustup cache
11:59:37 PM: Finished saving rust rustup cache
11:59:37 PM: Started saving go dependencies
11:59:38 PM: Finished saving go dependencies
11:59:45 PM: Cached Swift version 5.5
11:59:45 PM: Build failed due to a user error: Build script returned non-zero exit code: 2
11:59:45 PM: Creating deploy upload records
11:59:45 PM: Failing build: Failed to build site
11:59:45 PM: Failed during stage 'building site': Build script returned non-zero exit code: 2
11:59:45 PM: Finished processing build request in 2m11.320340175s

Hey there, @Loopwerk :wave:

Apologies for the delay! Has anything changed in the past five days?

This Support Guide contains a ton of useful debugging tips that can likely help you solve your problem :slight_smile: Additionally, this Support Guide houses all of our resources for debugging build and deploy issues.

If you are still having problems, please provide as much information as you can on what you have already tried, what your build settings are, your package.json / .toml file, etc. Thanks!

Nothing has changed, no. Tried rebuilding after clearing the cache, no change.

My requirements.txt file only contains pillow, and according to the logs that does get installed. But when my script tries to import PIL, it fails. This used to work fine, and I have make no changes to my website (other than just textual content changes).

Has something changed in the way Python dependencies or paths work?

The support article didn’t help me.

What’s actually weird to me is that, your build says build complete and then it fails: Netlify App. So my question is, what is it trying to do after the build? And if the build is not really complete, why is it logging that is it?

Something weird is definitely going on in here.

First it compiles the Swift code, which succeeds. Then one of the Swift scripts wants to execute the Python script Sources/ImageGenerator/__init__.py, and that fails.

Can I please get some support with this issue? It’s now been 7 days and I am still not able to build and deploy my website changes.

Hi Kevin, and sorry to be slow to get back to you.

Nobody on our staff is a python expert, and Hillary gave you our best guidance on debugging this yourself - did you read through her articles and try for instance building in our build image, as several of those docs suggest, to self-debug? I can also see that you use our legacy older build image called xenial in both logs, so you might try upgrading to the more recent one described here:

In the end, I think the most helpful thing I can tell you is that our staff are are only looking to guide you in debugging - not do the debugging for you - so while I can see the loglines you quoted and agree that there is something wrong in the module loading, my next steps would be to start googling error strings - which presumably you’ll be better suited to do since you are a python expert :slight_smile:

Hope that helps you debug further!

2 Likes

I’ve tried to build it locally using your build image, but that didn’t work at all:

qemu: uncaught target signal 4 (Illegal instruction) - core dumped
/opt/build-bin/run-build-functions.sh: line 215:  7904 Illegal instruction     swift build
Error building Swift package

I also tried to update my build image to Focal and my Python version from 3.7 to 3.8, with the following result, and that resulted in a working build again!

It’s still very strange to me how builds all of a sudden stopped working when I made absolutely no changes to my code or dependencies or anything like that, but well, at least it works again.

2 Likes