我在虚拟环境中使用python
可执行文件。我尝试按照here所述完成codesign
整个事情,包括创建证书等。命令有效,但结果保持不变。我认为它曾经用于OS X的早期版本,但我目前使用最新的El Capitan版本(10.11.6)并且它不再起作用了。关于如何解决它的任何想法?
编辑:我确实看到了this解决方案,但由于我的python是在虚拟环境中,我不确定它是否适用,除非你们不这么说......
编辑2 :我尝试了上面的解决方案,但没有奏效。 我应该提一下,我在virtualenv 中对python可执行文件进行了编码。
编辑3 :最终为我工作的是将flask
升级到当前版本(使用pip install flask --upgarde
),然后使用{{1}运行应用而不是export FLASK_APP=app.py; flask run
。当您使用python app.py
运行应用程序时,不再会弹出恼人的对话框。我的知识不需要代码签名。希望这有助于某人。
答案 0 :(得分:2)
为什么会这样?
因此,El Capitan中的python
可执行文件会产生.../Python.framework/Versions/2.7/Resources/Python.app
+一些额外的魔法。问题是框架包没有自己的签名,它使用父应用程序二进制文件的签名。
如何查看?
从非Apple维护的源代码安装应用程序之后要检查的第一件事就是检查您正在安装的应用程序是否限制:< / p>
ls -lO /System/Library/Frameworks/Python.framework/Versions/2.7/
csrutil status
如果限制,只要启用SIP,就无法将其删除(即使是root用户)。
怎么做?
所以你必须尝试几种不同的选择:
选项前0 - 我认为您已经这样做了:我不确定您是如何维护虚拟环境的,所以请确认您正在完成此过程,例如{ {3}}。
选项1 - 安全,但可能无效:使用here维护可执行文件,使用brew
维护您的软件包。这通常会立即解决问题,但我不确定你的情况是什么:)
选项2 - 危险,但可以使用:pip
和Check SIP。除非您在具有多年安全经验的IT团队保护的环境中工作,否则我不建议。此选项将解决问题,但您基本上摆脱了其中一个安全层...... GL!
更新1
还有另一种选择(不确定你是否尝试过它)
csrutil disable
),重新启动,浏览codesign
处理,重启和撤消选项1 (csrutil enable
)。我从来没有尝试过,但这并不代表你不能:)))Disable