使python意识到缺少__init__.py的软件包

时间:2019-12-24 22:21:01

标签: python macos python-2.7

我无法在OS X上导入mpl_toolkits,这显然是由于软件包目录(__init__.py)中缺少/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/mpl_toolkits文件。

$ python -c 'import mpl_toolkits'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named mpl_toolkits

$ ls /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/mpl_toolkits
axes_grid  axes_grid1  axisartist  exceltools.py  exceltools.pyc  gtktools.py  gtktools.pyc  mplot3d

子包mplot3d确实有一个__init.py__,但也不能导入:

$ ls /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/mpl_toolkits/mplot3d/
__init__.py  __init__.pyc  art3d.py  art3d.pyc  axes3d.py  axes3d.pyc  axis3d.py  axis3d.pyc  proj3d.py  proj3d.pyc

$ python -c 'from mpl_toolkits.mplot3d import axes3d'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named mpl_toolkits.mplot3d

自OS X 10.11起,即使root也缺乏/System中的写入权限。我知道人们可以通过执行csrutil disable进入恢复模式并禁用系统完整性保护,这将允许创建丢失的__init.py__文件。但是,有没有更简单的方法让python知道此软件包?

1 个答案:

答案 0 :(得分:3)

问题在于您仍在使用Python2。Matplotlib不久前就放弃了对Python 2的支持。 Python开发团队本身将在一周内(从2020年开始)放弃所有Python 2支持。您至少需要Python 3.6才能运行最新的Matplotlib。