From 72de89f54e744a8b3bbc9d3ea71f78a67d8ba82e Mon Sep 17 00:00:00 2001 From: Jameel Al-Aziz <247849+jalaziz@users.noreply.github.com> Date: Wed, 1 Sep 2021 15:05:11 -0700 Subject: [PATCH] Add hidden import to PyInstaller build (GH-2466) Add new platformdirs dependencies as hidden imports when creating PyInstaller-based binaries. platformdirs imports the module for each platform dynamically, which PyInstaller is unable to correctly detect for packing. By adding the modules as hidden imports, we are telling PyInstaller to include the modules in the packaged binary. This issue seems to have been introduce when switching to platformdirs in #2375. fixes #2464 Commit history before merge: * Add hidden import to PyInstaller build Add new platformdirs dependency as a hidden import when creating PyInstaller based binaries. * Only include the platformdirs for the relevant os --- .github/workflows/upload_binary.yml | 9 +++++++-- CHANGES.md | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/upload_binary.yml b/.github/workflows/upload_binary.yml index 766f37cc321..8f44d4ec27b 100644 --- a/.github/workflows/upload_binary.yml +++ b/.github/workflows/upload_binary.yml @@ -16,14 +16,17 @@ jobs: pathsep: ";" asset_name: black_windows.exe executable_mime: "application/vnd.microsoft.portable-executable" + platform: windows - os: ubuntu-20.04 pathsep: ":" asset_name: black_linux executable_mime: "application/x-executable" + platform: unix - os: macos-latest pathsep: ":" asset_name: black_macos executable_mime: "application/x-mach-binary" + platform: macos steps: - uses: actions/checkout@v2 @@ -40,8 +43,10 @@ jobs: python -m pip install pyinstaller - name: Build binary - run: | - python -m PyInstaller -F --name ${{ matrix.asset_name }} --add-data 'src/blib2to3${{ matrix.pathsep }}blib2to3' src/black/__main__.py + run: > + python -m PyInstaller -F --name ${{ matrix.asset_name }} --add-data + 'src/blib2to3${{ matrix.pathsep }}blib2to3' --hidden-import platformdirs.${{ + matrix.platform }} src/black/__main__.py - name: Upload binary as release asset uses: actions/upload-release-asset@v1 diff --git a/CHANGES.md b/CHANGES.md index 576e3c84882..ef0a57d6142 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,11 @@ # Change Log +## Unreleased + +### Packaging + +- Fix missing modules in self-contained binaries (#2466) + ## 21.8b0 ### _Black_