How to allow Python.app to firewall on Mac OS X?
I installed Python 3.6 from python.org, and I had a similar problem. I tried repeatedly to self-sign the python binaries /usr/local/bin/python3, /Library/Frameworks/Python.framework/Versions/3.6/bin/python3, and so forth, but I would keep getting the MacOS Firewall Deny/Allow popup.
Finally, self-signing the application located at /Library/Frameworks/Python.framework/Versions/3.6/Resources did the trick:
codesign --force --sign "My Signing Identity" /Library/Frameworks/Python.framework/Versions/3.6/Resources/Python.app
I'm on MacOS Mojave 10.14.1 for what that's worth.
With the OS X firewall enabled, you can remove the "Do you want the application "python" to accept incoming network connections?" message.
Create a self-signed certificate.
Open Keychain Access. Applications > Utilities > Keychain Access.
Keychain Access menu > Certificate Assistant > Create a Certificate...
Enter a Name like "My Certificate".
Select Identity Type: Self Signed Root
Select Certificate Type: Code Signing
Check the Let me override defaults box
Click Continue
Enter a unique Serial Number
Enter 7300 for Validity Period.
Click Continue
Click Continue for the rest of the dialogs
Now sign your application
codesign -s "My Certificate" -f $(which python)
In the dialog that appears, click "Allow".
Note that when using a virtual environment, you need to activate the virtual environment before running this command.
Slight addendum to the answer by @mr-howdy above. For Python 3.7, I had to use:
codesign --force --sign "My Certificate" /Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
Note the extra Contents/MacOS/Python
added to the path.