我在虚拟环境 中使用python
可执行文件。我尝试按照 here 中的说明进行整个 codesign
操作,包括创建证书等。该命令有效,但结果保持不变。我认为它曾经适用于以前版本的 OS X,但我目前使用的是最新的 El Capitan 版本 (10.11.6),但它不再适用了。关于如何修复它的任何想法?
编辑:我确实看到了this解决方案,但由于我的 python 在虚拟环境中,我不确定它是否适用,除非你们另有说明......
编辑 2:我尝试了上面的解决方案,但没有用。 我应该提到我正在 virtualenv 中对 python 可执行文件进行代码签名。
编辑 3:最终对我有用的是将 flask
升级到当前版本,(使用 pip install flask --upgarde
),并使用 export FLASK_APP=app.py 运行应用程序; flask run
而不是 python app.py
。当您使用 flask run
运行应用程序时,烦人的对话框不会再弹出。据我所知,不需要代码设计。希望这对某人有帮助。
最佳答案
为什么会这样?
所以 El Capitan 中的 python
可执行文件产生了 .../Python.framework/Versions/2.7/Resources/Python.app
+ 一些额外的魔法。问题是框架包没有自己的签名,它使用父应用程序二进制文件的签名。
如何检查?
从非 Apple-maintained-source-that-might-steal-your-soul 安装应用程序后,首先要检查的是检查您正在安装的应用程序是否受限:
ls -lO /System/Library/Frameworks/Python.framework/Versions/2.7/
csrutil status
如果它是受限,则只要启用 SIP 就无法将其删除(即使使用 root)。
怎么办?
所以你有几个不同的选择你必须尝试:
Pre-Option 0 - I think you are doing it already:我不确定你是如何维护你的虚拟环境的,所以只要确认你正在经历这个过程,比如 here .
选项 1 - 安全,但可能不起作用:使用
brew
维护您的可执行文件,使用pip
维护您的包。这通常会立即解决问题,但我不确定你的情况是什么 :)选项 2 - 危险,但会工作:Check 和 Disable SIP。除非你在一个由具有多年安全经验的 IT 人员保护的环境中工作,否则我不建议这样做。此选项将解决问题,但您基本上摆脱了其中一个安全层...GL!
更新 1
还有一个选择(不知道你有没有试过)
- 选项 1.5 - 我不知道它是否有效:尝试选项 1(
csrutil 禁用
),重新启动,通过codesign
处理、重新启动并撤消选项 1(csrutil enable
)。我从来没有尝试过,但这并不意味着你不能:))) Credit goes to this SO answer here
关于python - 在 El Capitan (OS X) 上允许 Python.app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39102571/