ModuleNotFoundError:没有名为“Python3”的模块

Posted

技术标签:

【中文标题】ModuleNotFoundError:没有名为“Python3”的模块【英文标题】:ModuleNotFoundError: No module named 'Python3' 【发布时间】:2020-10-23 20:13:46 【问题描述】:

使用 Python 3.8,导入时出现问题。这很简单。但是在 python 3 中的导入方式有什么变化吗?

main 文件夹下,存在以下结构。

a1.py

import sys
print(sys.version)
from b.b1 import *

b1.py

import os
print(os.getcwd())

当我执行python a/a1.py(在main下)时,它prints python version但在导入时出错,如下所示

Traceback (most recent call last):
  File "a/a1.py", line 3, in <module>
    from b.b1 import *
ModuleNotFoundError: No module named 'b'

可以通过在 a1.py 中附加路径来解决,但不是解决方案。我在这里遗漏了什么还是取决于解释器路径?

import sys
print(sys.version)
sys.path.append("path")
from b.b1 import *

在 Pycharm 中,当我在没有 sys.path.append 的情况下执行 a1.py(右键单击,以 'a1' 运行)时,它会执行。执行的命令如下所示

/Users/a1234/venv/bin/python /Users/a1234/project_folder/main/a/a1.py 

当我在没有 sys.path.append 的情况下从终端执行 a1.py 时(在 main,python a/a1.py 下,得到 ModuleNotFoundError: 错误)

【问题讨论】:

我在 3.8.2 中遇到了同样的问题 【参考方案1】:

a1.py 中的模块找不到 b 文件夹,因为它已经在一个文件夹中,但是如果您在两个文件夹 a、b 之外有一个 python 文件,就像您的代码一样调用每个文件夹,这可能会起作用。 ——

sys.path.append(path),将路径添加到路径列表中以检查可导入模块,因此它执行它的原因。

【讨论】:

感谢您的回复。但是,这很好用,因为两个模块都存在于同一个包中。 您是否发现上述案例中缺少任何内容?可能是解释器的路径或 pycharm 中的任何内容?我最近在使用 python 3.8 时遇到了这个问题。 你的怀疑是对的,确实是ide检查的路径问题,一般人安装python的时候,检查模块/标准库的路径是默认设置的。因此,当您调用 sys.path.append() 时,您正在添加另一个路径来检查可导入模块。 如何在没有 sys.path.append 的情况下完成(而不是每次将该模块导入另一个包的模块时都追加)? 您必须在高级设置中的环境变量中添加文件的路径,这对于像这样的简单任务来说更麻烦。默认情况下,您不能。导入文件时,Python 仅搜索当前目录、运行入口点脚本的目录以及包含包安装目录等位置的 sys.path(实际上比这要复杂一些,但这涵盖了大多数情况下)。

以上是关于ModuleNotFoundError:没有名为“Python3”的模块的主要内容,如果未能解决你的问题,请参考以下文章

ModuleNotFoundError:没有名为“dataviz”的模块

ModuleNotFoundError:没有名为“numpy”的模块

错误:ModuleNotFoundError:没有名为“图像”的模块

ModuleNotFoundError:没有名为“knox”的模块

ModuleNotFoundError:没有名为“memoize”的模块

ModuleNotFoundError:没有名为“pssh”的模块