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

Posted

技术标签:

【中文标题】Python:“ModuleNotFoundError”,但安装了模块?【英文标题】:Python: "ModuleNotFoundError", but module is installed? 【发布时间】:2018-01-23 09:47:30 【问题描述】:

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

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

我在 Anaconda Navigator 中检查了 matplotlib 2.0.2 已安装在环境中。

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

import matplotlib.pyplot as plt

plt.plot(range(10))
plt.show()

返回以下错误:

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

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

【问题讨论】:

看来,在安装或卸载matplotlib的过程中出了点问题。您是否尝试删除 matplotlib 并重新安装它? 然后我得到 (C:\Anaconda3) C:\Users\Rasmus&gt;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') github.com/conda/conda/issues/5432 表明这可能是 32 位和 64 位 python 之间的错误或字符集错误。我不在PATH 中使用非ASCII。我会尝试从头开始重新安装... 感谢@ImportanceOfBeingErnest!我发现了错误(硬盘损坏),并根据您的灵感在下面发布了我的解决方案。 【参考方案1】:

很难直接回答这个问题,但是,我在使用 PyCharm 和 Anaconda 的企业 Windows 环境中看到了大量问题,这些是您可能遇到的一些问题

    检查PATH 是否正确指向所有 Anaconda 位置

    import sys
    sys.path
    

    检查您的文件是否未被您的 IT 团队迁移到 C:\Users\username\AppData\Roaming

    清除系统中的任何python 分布。您在内部使用的软件发行版可能会打包自己的 python 发行版。这通常可以包含在PATH 中。另一个示例可能是将 Anaconda 安装到您的 C:\,但也可以在几个月前将其安装在 Users\Local\AppData'C:\Program Files' 并忘记!

直接调试问题的一个好方法是导航到ipython中的以下目录

C:\Anaconda3\lib\site-packages\matplotlib

他们尝试import matplotlib.markers

如果失败了,那么你可以尝试

import matplotlib
matplotlib.__file__

你应该检查这个结果是否给出了

'C:\\Anaconda3\\lib\\site-packages\\matplotlib\\__init__.pyc'

很可能会安装另一个优先的matplotlib 版本。然后,这将属于上述问题之一进行纠正。

【讨论】:

我认为为什么您的答案(在这种特定情况下)不可用的指针是错误仅在matplotlib 的一小部分中。如果不是@Ernest 的评论,您回答的最后一部分可能对我有所帮助(可能会导致导入失败)。 是的,我试着让我的答案对其他问题通用:)【参考方案2】:

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

问题确实出在matplotlib-package 本身。回想起来,问题的指针是预分发包中的错误不应该存在。如果是这样,则外部环境一定已经损坏,问题不在于 Python 安装本身。

我通过 Anaconda Promptconda remove matplotlib 卸载了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')

在@Ernest 发表评论之前,我认为这可能与non-ASCII in PATH or similar 有关。

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

手动删除它会导致 Windows 错误 0x80070570。在this post on ServerFault(对 OP 的评论)之后,我进行了检查,然后从 Windows Explorer GUI 进行了修复:右键单击 This PC 中的驱动器 --> Properties --> Tab Tools --> Check(如果发现任何错误,repair就会出现)。

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

【讨论】:

【参考方案3】:

PyCharm 需要安装解释器中可用的包。

您可以使用以下步骤找到可用于安装的 matplotlib 和其他软件包:

    打开文件--设置--项目--项目解释器菜单。 您应该会看到当前已安装的所有软件包,并且此列表中应该缺少 matplotlib。 单击右侧的 +(添加)按钮并安装 matplotlib 包。 完成后,关闭顶部对话框,您应该会在已安装包列表中看到 matplotlib。

【讨论】:

如问题所述,问题不是卸载包,而是子包损坏!【参考方案4】:

就我而言,我可以通过将PYTHONPATH 设置为所需包所在的site-packages 文件夹的路径来修复它,不包括site-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/

python 的 Windows 安装也应如此。 如果使用虚拟环境,则可以编辑activate 脚本以设置PYTHONPATH

完成后,我签入了python shell。

$ 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'

祝你好运!

参考文献

https://github.community/t5/Programming-Help-and-Discussion/Python-ModuleNotFoundError-although-module-is-installed-aiohttp/td-p/28525

【讨论】:

【参考方案5】:

使用 pip 时遇到相同类型的错误。创建了新的 VENV 并执行了解决我的问题的应用程序

【讨论】:

以上是关于Python:“ModuleNotFoundError”,但安装了模块?的主要内容,如果未能解决你的问题,请参考以下文章

相对导入 - ModuleNotFoundError:没有名为 x 的模块

代写python,代写python编程,python代写,python编程代写,留学生python代写

001--python全栈--基础知识--python安装

Python代写,Python作业代写,代写Python,代做Python

Python开发

Python,python,python