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>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 Prompt 用conda 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代写