pyinstaller / pyinstaller/pyinstaller
Portaudio Bundled but location is my local install?
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 13.1k
- Forks
- 2k
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 11
Description
Hi, my code works, and bundling works.
However when I add the need for portaudio in my code it appears that the hook runs and loads the correct bundles into the onefile locations, but when running the application it looks for the portaudio in another location (my local install).
To be clear:
Console error:
Library Validation failed: Rejecting '/opt/homebrew/Cellar/portaudio/19.7.0/lib/libportaudio.2.dylib' (Team ID: none, platform: no) for process 'pypy(12758)' (Team ID: N12B3X14HN, platform: no), reason: mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?)
The issue is NOT codesigning, I manually sign everything fine, the issue is that it is attempting to load a local copy of portaudio and NOT the one bundled (which is signed).
Any idea what to do or how to track down? I looked in warn log but didn't see this mentioned.
My spec is pretty standard, thanks for any help!:
block_cipher = None
a = Analysis(
['pypy.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name='pypy',
debug=1,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity='Developer ID...',
entitlements_file='',
icon=['icons/pypy.png'],
)
coll = COLLECT(
exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='pypy',
)
app = BUNDLE(
coll,
name='[pypy.app](http://pypy.app/)',
icon='./icons/pypy.png',
bundle_identifier='com.me.pypy',
info_plist={
"NSHighResolutionCapable":True,
"com.apple.security.automation.apple-events":True,
"NSMicrophoneUsageDescription":"This will be used to analyze slurring",
"com.apple.security.device.microphone":True,
"com.apple.security.device.audio-input":True
}
)
Operating System: OSX (13.3.1)
python installed with brew
pyinstaller version: 5.13.0
I have been working on this for a while, just found: https://stackoverflow.com/questions/69811814/how-to-include-portaudio-into-a-pyinstaller-onefile-build
Where he mentions there seems to be an issue with linking, is this the same issue, is there a solution we can include in pyinstaller?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the supplied PyInstaller spec and the macOS 13.3.1 reproduction, then compare the bundled locations with the path reported in the console error. Check the warn log and the linked Stack Overflow discussion for clues about how portaudio is resolved. Done means identifying why the local portaudio copy is selected and determining whether PyInstaller needs a fix or documented workaround.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- macos, python
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100