【发布时间】:2016-12-21 04:49:51
【问题描述】:
我的脚本需要导入 numpy、sklearn 和 matplotlib,但我无法安装 sklearn。对我的问题 http://https://stackoverflow.com/questions/38733220/difference-between-scikit-learn-and-sklearn 的一个非常有用的回复解释说我需要重新安装 numpy。使用 pip 更新 numpy 失败,因为 OS X 10.11 SIP 阻止卸载当前的 numpy。 mfripp http://https://apple.stackexchange.com/questions/209572/how-to-use-pip-after-the-os-x-el-capitan-upgrade 对有关 pip 和 SIP 的问题的非常有用的回答为该问题提供了详细的解决方案。我完全按照这些说明使用pip 为所有用户重新安装numpy、matplotlib、scipy 和sklearn。
当我使用命令运行完成的脚本时
python DistMatPlot.py Random10A.matrix Random10A.pdf
脚本运行完美,写入了所有预期的输出文件。
但是,我总是看到:
"/Library/Python/2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib 正在使用 fc-list 构建字体缓存。这 可能需要一点时间。 warnings.warn('Matplotlib 正在构建字体 使用 fc-list 缓存。这可能需要一点时间。')"
在更新 numpy、matplotlib 等之前,我从未见过其他 matplotlib 脚本。2 秒的延迟只是有点烦人。
我使用 pyinstaller 编译了一个冻结的二进制文件,在编译过程中我收到了几条类似于上面的消息。 生成的冻结二进制文件运行失败,命令如下:
./DistMatPlot Random10A.matrix Random10A.pdf
产生了以下内容:
/var/folders/8x/7_zp_33h8xj6td0059b72p9h0000gp/T/_MEIhIysTV/matplotlib/font_manager.py:273: UserWarning: Matplotlib 正在使用 fc-list 构建字体缓存。这 可能需要一点时间。 Traceback(最近一次调用最后一次):文件 “”,第 13 行,在文件中 "/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", 第 389 行,在 load_module 中 exec(bytecode, module.dict) 文件“matplotlib/pyplot.py”,第 114 行,文件“matplotlib/backends/init.py”,行 32、在pylab_setup文件中 "/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", 第 389 行,在 load_module 中 exec(bytecode, module.dict) 文件“matplotlib/backends/backend_macosx.py”,第 24 行,在文件中 "/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", 第 546 行,在 load_module 中 module = imp.load_module(fullname, fp, filename, ext_tuple) RuntimeError: Python 没有作为框架安装。 Mac OS X 如果没有 Python,后端将无法正常运行 作为框架安装。有关更多信息,请参阅 Python 文档 有关在 Mac OS X 上安装 Python 作为框架的信息。请 要么将 Python 重新安装为框架,要么尝试其中一个 后端。如果您在虚拟环境中使用 Matplotlib 请参阅“在虚拟环境中使用 Matplotlib” Matplotlib 常见问题 DistMatPlot 返回 -1
我查看了类似的问题并尝试了他们建议的解决方案,但无济于事。
(1) 为什么matplotlib每次运行都需要重建一个字体缓存?
(2) 为什么脚本本身成功时冻结的二进制文件会失败?运行 pyinstaller 时是否需要除 -F 之外的其他选项?
【问题讨论】:
-
您是否考虑过使用anaconda,它可以更轻松地安装常用软件(提供二进制文件)?由于我不是 OS X 用户,我无法在此提供其他提示,但我观察到与 Linux 相比,OS X 上有许多安装/编译问题(关于需要 C++、Fortran 等的复杂软件)。关于 matplotlib:它只做一次字体缓存!
-
“为什么 matplotlib 每次运行时都需要重建字体缓存”,你有没有得到任何解决方案?
标签: python matplotlib