如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3相关的知识,希望对你有一定的参考价值。
参考技术A 原来的安装目录见第2步,不过所有的python都在/System/Library/Frameworks/Python.framework/Versions
目录中,所以最好使用下面的命令移动一下,当然不移动也可以。
但后面步骤中的某些路径需要修改下。
sudo
mv /Library/Frameworks/Python.framework/Versions/3.3
/System/Library/Frameworks/Python.framework/Versions!
如何允许 Python.app 在 Mac OS X 上设置防火墙?
【中文标题】如何允许 Python.app 在 Mac OS X 上设置防火墙?【英文标题】:How to allow Python.app to firewall on Mac OS X? 【发布时间】:2016-04-18 01:00:39 【问题描述】:当我在 Mac 上运行 python 应用程序时,它会显示许多关于希望“Python.app”接受传入网络连接的对话框。
即使我允许它多次,它也会一次又一次地显示。
如何让它一次不显示?
编辑
我发现了这个问题: Add Python to OS X Firewall Options?
我按照公认的答案去做,但最后当我运行codesign -s "My Signing Identity" -f $(which python)
时,它说:
/usr/bin/python: replacing existing signature
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate: can't create output file: /usr/bin/python.cstemp (Operation not permitted)
/usr/bin/python: the codesign_allocate helper tool cannot be found or used
接下来怎么办?
【问题讨论】:
(Operation not allowed) 表示不允许您执行操作 - 具体而言,您不能在 /usr/bin 中创建文件,该文件实际上归 root 所有。由于您已经禁用了 SIP,您应该运行codesign
和 sudo
。
【参考方案1】:
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.
【讨论】:
这个答案有效。无需禁用 SIP。一侧节点是codesign -s "My Certificate" -f $(which python)
在我这边工作得不是很好。解决方法是双击钥匙串应用程序中的证书,展开信任部分,选择Code Signing
下的始终信任【参考方案2】:
我从 python.org 安装了 Python 3.6,我遇到了类似的问题。我反复尝试对 python 二进制文件 /usr/local/bin/python3、/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 等进行自签名,但我会继续获得 MacOS Firewall Deny/允许弹出窗口。
最后,自签名位于 /Library/Frameworks/Python.framework/Versions/3.6/Resources 的应用程序成功了:
codesign --force --sign "My Signing Identity" /Library/Frameworks/Python.framework/Versions/3.6/Resources/Python.app
我正在使用 MacOS Mojave 10.14.1,因为它物有所值。
【讨论】:
如果你在这里,我可能会亲吻你。好吧,也许不是。 @mr-howdy,我收到错误:error: The specified item could not be found in the keychain
- 你能帮忙吗?
@Taz 您可以在下面关注@Prasad 的回答。创建钥匙串证书。之后您还可以双击您创建的证书,展开信任,在Code Signing
选项中选择始终信任
这家伙就在这里,总统先生,给他一枚勋章【参考方案3】:
上面@mr-howdy 的答案略有补充。对于 Python 3.7,我必须使用:
codesign --force --sign "My Certificate" /Library/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
注意添加到路径中的额外Contents/MacOS/Python
。
【讨论】:
非常感谢您的回答,这对我有帮助。【参考方案4】:创建自签名证书。
打开钥匙串访问。应用程序 > 实用程序 > 钥匙串访问。 钥匙串访问菜单 > 证书助手 > 创建证书... 输入“我的证书”之类的名称。 选择身份类型:自签名根 选择证书类型:代码签名 选中让我覆盖默认值框 点击继续 输入唯一的序列号(从 1 到 2147483647) 输入 7300 作为有效期。 点击继续 点击继续查看其余对话框现在签署您的申请,通过以下方式:
在终端运行codesign -s --deep "My Certificate" -f $(which python)
在出现的对话框中,点击“允许”。
或
打开 Keychains 应用,搜索您的证书, 右键单击“获取信息” 展开信任部分,在代码签名下选择“始终信任”注意,使用虚拟环境时,需要先激活虚拟环境才能运行此命令。
【讨论】:
这是一个很好的答案,因为它经历了创建代码签名证书的步骤。但是,我没有使用$(which python)
,而是使用了路径,因为我的 python3 是别名。
在我的情况下,“--deep”未被识别,但除此之外,这是一个很好的答案。【参考方案5】:
显然 El Capitan 有一个叫 System Integrity Protection 的东西,它可以防止任何用户(甚至是 root)修改某些操作系统资源。例如在这种情况下的 /usr/bin 目录,你有 python 可执行文件。要对 python 二进制文件进行自签名,您可以通过在恢复模式下重新启动您的 mac(按住 CMD+R 重新启动)然后在终端中键入以下内容来禁用 SIP:
csrutil disable
然后重新启动到常规 OSX,并按照步骤对 python 进行自签名并执行:
codesign -s "My Signing Identity" -f $(which python)
最后重新启动进入恢复模式,并重新启用 SIP:
csrutil enable
【讨论】:
谢谢。如果它可以这样工作,我会说多么可怕!它看起来像黑客。确实,我不知道为什么软件(如 python 库)与系统环境不匹配。这对普通开发者来说并不好。 发生的情况是,您从 python 中继承了 El Capitan 之前的版本。您可以做的另一件事是简单地重新安装 python 用户 brew。看看这个:apple.stackexchange.com/questions/209572/… 这个:github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/… 我已尝试重新启动进入恢复模式。但这需要管理员密码。因为公司的电脑,我可以登录。【参考方案6】:您可以在系统偏好设置->安全和隐私中允许 python 的传入连接。单击防火墙选项卡,然后单击防火墙选项按钮(您可能需要先进行身份验证/解锁)。您应该会在某处看到 python 列出,您可以选择允许传入连接。这至少解决了我的问题。
【讨论】:
这只能工作一次。 OP 要求的安全对话框仍然弹出 嗯。对我来说,这阻止了对话框再次弹出。但也许我没有做任何事情来触发它?运行 osx 10.14.5。以上是关于如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3的主要内容,如果未能解决你的问题,请参考以下文章
如何检测 NaN 在哪里传递给 Mac OS X 10.9 上的 CoreGraphics API
如何在 mac os x (10.9) 上的 python 中安装 libgpuarray 和 clBLAS?