在 OSX 上更新 Python 和包
Posted
技术标签:
【中文标题】在 OSX 上更新 Python 和包【英文标题】:Updating Python and packages on OSX 【发布时间】:2014-03-18 03:36:01 【问题描述】:我正在尝试更新运行 Mavericks 的 Apple 机器上的 python 安装。我担心我用自制软件搞砸了。
当我尝试使用制表符完成 python
时,我得到以下输出:
运行where python
会产生以下输出/usr/bin/python
。同样,运行where python3
会产生/usr/local/bin/python3
和where 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
时显示的相同:
尝试通过 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 和包的主要内容,如果未能解决你的问题,请参考以下文章