python - 在 El Capitan (OS X) 上允许 Python.app

标签 python macos

enter image description here

我在虚拟环境 中使用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 - 危险,但会工作:CheckDisable 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/

相关文章:

python - 如何覆盖 Flask-admin 缩略图名称生成器?

python导入xml不包含xml.etree.ElementTree

python - 将 QGraphicsDropShadowEffect 与多个小部件一起使用

swift - 通过单击容器 View OS X Swift 中的 subview 事件发送到释放实例 0x600000147e80 错误的消息

macos - OS X Webview 用户代理不会改变

macos - 由于 Mach-O header 中缺少 LC_VERSION_MIN,Mac App Store 分发的 Xcode 应用程序存档验证失败

python - 第一行和最后一行将热图图切成两半

python - 如何在 Pandas 的 groupby 对象中获取组数?

macos - 在显示 Nib 实体之前获取尺寸

macos - 在 osx-Lion 中创建并在 osx-snow-leopard 中访问的 postgres 9.1.3 数据的控制文件错误校验和不正确