在 OSX 上更新 Python 和包

Posted

技术标签:

【中文标题】在 OSX 上更新 Python 和包【英文标题】:Updating Python and packages on OSX 【发布时间】:2014-03-18 03:36:01 【问题描述】:

我正在尝试更新运行 Mavericks 的 Apple 机器上的 python 安装。我担心我用自制软件搞砸了。

当我尝试使用制表符完成 python 时,我得到以下输出:

python python2.5-config python2.7 python3-config pythonw pythonw2.7 python-config python2.6 python2.7-config python3.3 pythonw2.5 pythonw3.3 python2.5 python2.6-config python3 python3.3-config pythonw2.6

运行where python 会产生以下输出/usr/bin/python。同样,运行where python3 会产生/usr/local/bin/python3where python3.3 会产生/usr/local/bin/python3.3

当我分别运行每个不同的 python 可执行文件时,我得到以下输出:

$蟒蛇 Python 2.7.5(默认,2013 年 8 月 25 日,00:04:04) [GCC 4.2.1 兼容 Apple LLVM 5.0 (clang-500.0.68)] 在 darwin 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>> $蟒蛇3 Python 3.3.5(默认,2014 年 3 月 17 日,21:17:03) [GCC 4.2.1 兼容 Apple LLVM 5.1 (clang-503.0.38)] 在 darwin 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>> $蟒蛇3.3 Python 3.3.5(默认,2014 年 3 月 17 日,21:17:03) [GCC 4.2.1 兼容 Apple LLVM 5.1 (clang-503.0.38)] 在 darwin 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>>

在 PyCharm 中,默认可用的解释器路径是:

/System/Library/Frameworks/Python.framework/Versions/2.5/bin/python /System/Library/Frameworks/Python.framework/Versions/2.6/bin/python /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python /usr/local/bin/pypy /usr/local/bin/python3 /usr/local/bin/python3.3

在 PyCharm 中选择 /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python 作为我的解释器表明有几个包已过时。这些过时的包与我运行pip list -o时显示的相同:

警告:找不到 setuptools==0.6c12dev-r88846 的 svn 位置 bdist-mpkg(当前:0.4.4 最新:0.5.0) 找不到任何满足要求的下载 bonjour-py 一些外部托管的文件被忽略(使用 --allow-external bonjour-py 来允许)。 matplotlib(当前:1.1.1 最新:1.3.1) numpy(当前:1.6.2 最新:1.8.0) pyOpenSSL(当前:0.13 最新:0.14) python-dateutil(当前:1.5 最新:2.2) pytz(当前:2012d 最新:2014.1) scipy(当前:0.11.0 最新:0.13.3) setuptools(当前:0.6c12dev-r88846 最新:3.3) 扭曲(当前:12.2.0 最新:13.2.0) xattr(当前:0.6.4 最新:0.7.4) zope.interface(当前:3.8.0 最新:4.1.0) pyobjc-core(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-AddressBook(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-AppleScriptKit(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-AppleScriptObjC(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-Automator(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-CFNetwork(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-Cocoa(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-Collaboration(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-CoreData(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-CoreLocation(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-CoreText(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-DictionaryServices(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-ExceptionHandling(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-FSEvents(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-InputMethodKit(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-InstallerPlugins(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-InstantMessage(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-InterfaceBuilderKit(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-LatentSemanticMapping(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-LaunchServices(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-Message(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-OpenDirectory(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-PreferencePanes(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-PubSub(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-QTKit(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-Quartz(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-ScreenSaver(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-ScriptingBridge(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-SearchKit(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-ServiceManagement(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-SyncServices(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-SystemConfiguration(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-WebKit(当前:2.3.2a0 最新:2.5.1) pyobjc-framework-XgridFoundation(当前:2.3.2a0 最新:2.5.1)

尝试通过 PyCharm 更新 numpy 会导致以下错误:

升级包失败。 执行了以下命令: /Applications/PyCharm CE.app/helpers/packaging_tool.py install --build-dir /private/var/folders/7r/9rtxb7c94bv_k4szp8lnkpmm0000gn/T/pycharm-packaging258144586042338380.tmp -U numpy 命令的错误输出: 在 /Users/myusername/Library/Logs/pip.log 中存储失败的调试日志 (1)

检查日志文件似乎是导致失败的原因

clang:错误:未知参数:'-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future] clang:注意:这将是未来的硬错误(不能降级为警告) clang:错误:未知参数:'-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future] clang:注意:这将是未来的硬错误(不能降级为警告) 失败。

当我运行sudo pip install -U numpy时,我得到了与上面相同的错误

基于此信息,我(希望是正确的)得出结论,我正在尝试更新 Apple 提供的 python,并且 MacPorts 可能更适合解决此任务。我安装了 MacPorts 并运行了port upgrade outdated,结果是Nothing to upgrade

如何从 2.7.5 更新到 2.7.6 并更新相关包?

【问题讨论】:

【参考方案1】:

问题在于,mavericks 似乎已经破坏了构建 python 扩展。 mavericks 上的 python 是使用带有旧选项的旧编译器构建的。这些选项被存储以供以后在

中使用
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.py

您可以手动编辑此文件以删除错误的编译器选项,或者您可以让 sed 为您完成:

sed -i 's/-mno-fused-madd//' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_sysconfigdata.py

我只在系统 Python 2.7 上测试和使用过它。我不知道这是否适用于您的 /usr/local python 版本。使用 homebrew 或其他方法使用最新的编译器选项重建这些 python 实例可能更容易。

更新:您可能还更喜欢使用 gcc 而不是 clang。见:https://***.com/a/20295014/16998

【讨论】:

你至少应该得到一个不同的错误。如果您没有收到其他错误,那么您删除 -mno-fused-madd 没有用。您一定是编辑了错误的文件或运行了错误的 python。 我最终重新安装了 Mavericks。我知道这对可能遇到此问题的其他人没有帮助,但现在一切正常。我认为问题在于 OSX 提供的 python 并不意味着手动更新(这是我试图做的)。

以上是关于在 OSX 上更新 Python 和包的主要内容,如果未能解决你的问题,请参考以下文章

在 OSX 上更新 GCC

OSX下 pip更新及安装python库

更新到 71.0 OSX 后,Firefox 下载随机失败

markdown 如何在OSX(Wine)上更新MTG Arena而无需重新下载所有内容

如何将 OSX 上的 Xcode 更新到最新版本?

R升级和包更新