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
This commit is contained in:
Jameel Al-Aziz 2021-09-01 15:05:11 -07:00 committed by GitHub
parent 77d11bb4b4
commit 72de89f54e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 2 deletions

View File

@ -16,14 +16,17 @@ jobs:
pathsep: ";" pathsep: ";"
asset_name: black_windows.exe asset_name: black_windows.exe
executable_mime: "application/vnd.microsoft.portable-executable" executable_mime: "application/vnd.microsoft.portable-executable"
platform: windows
- os: ubuntu-20.04 - os: ubuntu-20.04
pathsep: ":" pathsep: ":"
asset_name: black_linux asset_name: black_linux
executable_mime: "application/x-executable" executable_mime: "application/x-executable"
platform: unix
- os: macos-latest - os: macos-latest
pathsep: ":" pathsep: ":"
asset_name: black_macos asset_name: black_macos
executable_mime: "application/x-mach-binary" executable_mime: "application/x-mach-binary"
platform: macos
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
@ -40,8 +43,10 @@ jobs:
python -m pip install pyinstaller python -m pip install pyinstaller
- name: Build binary - name: Build binary
run: | run: >
python -m PyInstaller -F --name ${{ matrix.asset_name }} --add-data 'src/blib2to3${{ matrix.pathsep }}blib2to3' src/black/__main__.py 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 - name: Upload binary as release asset
uses: actions/upload-release-asset@v1 uses: actions/upload-release-asset@v1

View File

@ -1,5 +1,11 @@
# Change Log # Change Log
## Unreleased
### Packaging
- Fix missing modules in self-contained binaries (#2466)
## 21.8b0 ## 21.8b0
### _Black_ ### _Black_