【问题标题】:Python: "ModuleNotFoundError", but module is installed?Python:“ModuleNotFoundError”,但安装了模块?
【发布时间】: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!我发现了错误(硬盘损坏),并根据您的灵感在下面发布了我的解决方案。

标签: python matplotlib module anaconda python-module


【解决方案1】:

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

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

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

  3. 清除系统中的任何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 和其他软件包:

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

    祝你好运!

    参考文献

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 2020-01-12
        • 2021-03-20
        • 2019-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多