Python:“ModuleNotFoundError”,但模块已安装?

Ras*_*963 6 python module python-module matplotlib anaconda

我意识到这似乎是一个通用问题,但所有答案都指向同时python安装了两个- 我已经卸载了另一个。

目前,我从PyCharm 2017.1.5(windows 10)运行我的代码,并将Python 解释器设置为Python 3.6.1 (C:\Anaconda3\python.exe),即我安装了Anaconda3,其中包括matplotlib,并使用Ananconda3解释器从PyCharm运行。

我在检查蟒蛇导航仪matplotlib 2.0.2安装在环境。

一个最小(非工作)示例:

import matplotlib.pyplot as plt

plt.plot(range(10))
plt.show()
Run Code Online (Sandbox Code Playgroud)

返回以下错误:

C:\Anaconda3\python.exe C:/Users/John/Documents/CPU/master/untitled/main11.py
Traceback (most recent call last):
  File "C:/Users/John/Documents/CPU/master/untitled/main11.py", line 1, in <module>
    import matplotlib.pyplot as plt
  File "C:\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 29, in <module>
    import matplotlib.colorbar
  File "C:\Anaconda3\lib\site-packages\matplotlib\colorbar.py", line 34, in <module>
    import matplotlib.collections as collections
  File "C:\Anaconda3\lib\site-packages\matplotlib\collections.py", line 37, in <module>
    import matplotlib.lines as mlines
  File "C:\Anaconda3\lib\site-packages\matplotlib\lines.py", line 28, in <module>
    from matplotlib.markers import MarkerStyle
ModuleNotFoundError: No module named 'matplotlib.markers'

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

这在 2 周前运行良好,但现在不行了。据我所知,我没有改变或更新任何东西。模块加载正确,但是好像是模块内容有变化?如果是这样:这是怎么发生的,我该如何解决?

ant*_*354 6

就我而言,我可以通过设置所需包所在文件夹PYTHONPATH的路径来修复它,不包括.site-packagessite-pacages

我用的是pyenv虚拟环境,路径是/home/apk/.pyenv/versions/python-3-7-4. 激活环境后,pip将软件包安装到/home/apk/.pyenv/versions/python-3-7-4/lib/python3.7/site-packages. 因此,在终端中,我设置:

$ PYTHONPATH=/home/apk/.pyenv/versions/python-3-7-4/lib/python3.7/
Run Code Online (Sandbox Code Playgroud)

对于 Windows 安装来说也是如此python。如果使用虚拟环境,则可以编辑activate脚本来设置PYTHONPATH

完成后,我签入了一个pythonshell。

$ python
Python 3.7.4 (default, Feb  5 2020, 17:11:33) 
[GCC 5.5.0 20171010] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/apk/.pyenv/versions/3.7.4/lib/python37.zip', '/home/apk/.pyenv/versions/3.7.4/lib/python3.7', '/home/apk/.pyenv/versions/3.7.4/lib/python3.7/lib-dynload', '/home/apk/.pyenv/versions/python-3-7-4/lib/python3.7']
>>> sys.executable
'/home/apk/.pyenv/versions/python-3-7-4/bin/python'
Run Code Online (Sandbox Code Playgroud)

祝你好运!

参考


Ras*_*963 5

@ImportanceOfBeingErnest 引导我走向正确的方向。我在这里发布我的解决方案,其他人可能会找到答案。问题是磁盘扇区损坏——这是一个不太可能发生的偶然事件。

问题确实出在matplotlib-package 本身。回顾过去,问题的根源在于预分发包中不应存在错误。如果出现这种情况,则外部环境一定已损坏,并且问题不在于 Python 安装本身。

matplotlib通过Anaconda Prompt卸载并conda remove matplotlib使用 重新安装conda install matplotlib。这给了我这个错误:

(C:\Anaconda3) C:\Users\John>conda install matplotlib
[...]
ERROR conda.core.link:_execute_actions(337): An error occurred while installing package 'defaults::matplotlib-2.0.2-np112py36_0'.
OSError(22, 'Invalid argument') Attempting to roll back. 

OSError(22, 'Invalid argument')
Run Code Online (Sandbox Code Playgroud)

在 @Ernest 发表评论之前,我认为这可能与非 ASCII inPATH或类似的.

相反,我尝试完全重新安装Anaconda3,重新启动,发现 Anaconda3 文件夹的一部分未删除(包含 的文件夹matplotlib)。

手动删除它会出现 Windows 错误0x80070570在 ServerFault 上的这篇文章(对 OP 的评论)之后,我运行了检查,然后从Windows 资源管理器 GUI进行了修复:右键单击此电脑中的驱动器-->属性--> 选项卡工具-->检查(如果出现修复,则出现修复)发现任何错误)。

经过一些重新启动,从头开始重新安装Anaconda3并再次重新启动,我能够再次运行我的项目!