【问题标题】:Why I receive ModuleNotFoundError, while it is installed and on the sys.path?为什么我在安装并在 sys.path 上时收到 ModuleNotFoundError?
【发布时间】:2017-11-04 11:46:46
【问题描述】:

完整的错误是:

Traceback (most recent call last):
  File "D:\pyqt4_examples\matplotlib.py", line 4, in <module>
    import matplotlib.pyplot as plt
  File "D:\pyqt4_examples\matplotlib.py", line 4, in <module>
    import matplotlib.pyplot as plt
ModuleNotFoundError: No module named 'matplotlib.pyplot'; 'matplotlib' is not a package

测试代码在文件histogram.py:

import sys
for item in sys.path: print( item )

import random
import matplotlib.pyplot as plt

x = random.sample(range(1000), 30)
xbins = [0, len(x)]

print( "x: " + str( x ) )
print( "xbins: " + str( xbins ) )

plt.bar(range(0,30), x)
plt.show()

步骤

在我第一次运行代码后,当我执行for item in sys.path: print( item )时,我得到了python系统路径的两倍,如下所示:

D:\pyqt4_examples
F:\Python36\python36.zip
F:\Python36\DLLs
F:\Python36\lib
F:\Python36
F:\Python36\lib\site-packages
F:\Python36\lib\site-packages\Sphinx-1.5.6-py3.6.egg
F:\Python36\lib\site-packages\win32
F:\Python36\lib\site-packages\win32\lib
F:\Python36\lib\site-packages\Pythonwin
F:\Python36\lib\site-packages\setuptools-27.2.0-py3.6.egg
D:\pyqt4_examples
F:\Python36\python36.zip
F:\Python36\DLLs
F:\Python36\lib
F:\Python36
F:\Python36\lib\site-packages
F:\Python36\lib\site-packages\Sphinx-1.5.6-py3.6.egg
F:\Python36\lib\site-packages\win32
F:\Python36\lib\site-packages\win32\lib
F:\Python36\lib\site-packages\Pythonwin
F:\Python36\lib\site-packages\setuptools-27.2.0-py3.6.egg
...
Here is the erro message, just above

在文件夹F:\Python36\lib\site-packages 上,matplotlibmatplotlib.pyplot 是否正确:

$ ls F:\Python36\lib\site-packages\matplotlib
__init__.py               _mathtext_data.py    animation.py       blocking_input.py  ...
_contour.cp36-win32.pyd   _version.py          backend_tools.py   compat             ...
_delaunay.cp36-win32.pyd...                    mathtext.py        pyplot.py...
_image.cp36-win32.pyd     afm.py               bezier.py          contour.py         ...
...

详情

直到昨天我的Anaconda Python 2.7.13 工作得非常好。但我还决定安装Python 3.6 来运行仅适用于较新版本的新程序。在那之后它开始不再工作了。

我不知道为什么,所以我卸载了 Python 3,但仍然无法正常工作。然后我重新安装了 Python 2.7 仍然无法正常工作。我安装了 Pythonxy,但仍然无法正常工作。

在4年没有格式化我的电脑并且从未删除我的数据之后,因为我总是使用upgrade工具从Windows 8.1迁移到Windows 10,我完全格式化了我的电脑删除了我的所有数据,并安装了一个新的全新安装Windows 10 Creator Update。并安装了Python Anaconda 2.7,但仍然无法正常工作。然后我安装了Python 3 Anaconda 仍然无法正常工作。然后我卸载了 Python 2.7 仍然无法正常工作。

我不知道为什么它不起作用。我该如何调试python,或者我可以尝试什么来找到问题?我的意思是,它没有任何意义,因为它是一个全新的系统安装,它怎么能立即破坏Python?在我的旧安装上使用 python 已经有 4 年了,直到昨天才出现问题。现在旧安装和全新安装都无法正常工作。

我的系统现在是:

$ systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
OS Name:                   Microsoft Windows 10 Pro
OS Version:                10.0.15063 N/A Build 15063

$ python --version
Python 3.6.1 :: Anaconda 4.4.0 (32-bit)

我能找到的相关问题:

  1. No module named 'matplotlib.pyplot'; 'matplotlib' is not a package
  2. ImportError: No module named matplotlib with matplotlib installed
  3. ImportError: No module named 'matplotlib.pyplot'; matplotlib is not a package
  4. matplotlib - ImportError: No module named _tkinter
  5. ImportError: No module named matplotlib in IDLE
  6. ModuleNotFoundError: No module named 'matplotlib.pyplot'
  7. Failure to import matplotlib.pyplot in jupyter (but not ipython)
  8. jupyter ModuleNotFoundError: No module named matplotlib
  9. ImportError No module named 'matplotlib'
  10. ImportError: No module named matplotlib
  11. ImportError: No module names 'matplotlib' Python 3.3
  12. ImportError: No module named 'matplotlib' -- Using Anaconda tensorflow environment
  13. Have installed matplotlib 3 times still get error: ImportError: No module named backends.backend_wxagg
  14. anaconda cannot import matplotlib.pyplot
  15. Python matplotlib installation issue

【问题讨论】:

  • 您的第一个sys.pathD:\pyqt4_examples,其中有一个名为matplotlib.py 的文件...import matplotlib.xxx 将尝试加载此文件,这就是它不是包的原因。重命名它,看看是否可以解决它。
  • 感谢@AChampion!错误消息中明确说明了它正在尝试导入与模块命名相同的文件。我不敢相信我浪费了整整 2 天的时间,再加上未来一个月的时间,我为了这么简单的事情重新安装了所有应用程序和备份。

标签: python windows python-2.7 matplotlib windows-10


【解决方案1】:

您只需要将文件 matplotlib.py 重命名为其他名称。此错误是因为 Python 首先在当前文件夹中查找要导入的文件,并且它正在查找名为 module.xml 的文件。它永远不会正确导入模块,因为它正在尝试导入文件夹中的文件。

【讨论】:

  • 感谢您的信息。在此处使用 Windows 10 和 python 3.6。我首先检查了一个错误的文件,因为我通常不会将文件命名为包名,所以没有注意到。但是经过仔细检查,是的,我将文件命名为 matplotlib!改完之后,bam,拿到剧情了!
猜你喜欢
  • 2021-09-12
  • 2010-12-11
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多