首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 3-导入同一目录下的.py文件- ModuleNotFoundError:没有名为‘__main__.char’的模块;'__main__‘不是包

在Python 3中,当我们想要导入同一目录下的.py文件时,可以使用相对导入或绝对导入的方式。然而,当我们尝试导入同一目录下的.py文件时,可能会遇到"ModuleNotFoundError:没有名为‘main.char’的模块"的错误。这个错误是由于使用了错误的导入方式或者文件路径不正确导致的。

解决这个问题的方法有两种:

  1. 使用相对导入: 相对导入是指从当前模块所在的包中导入其他模块。在同一目录下的.py文件中,可以使用相对导入来导入其他.py文件。例如,假设我们有以下目录结构:
  2. 使用相对导入: 相对导入是指从当前模块所在的包中导入其他模块。在同一目录下的.py文件中,可以使用相对导入来导入其他.py文件。例如,假设我们有以下目录结构:
  3. 在main.py中,我们可以使用相对导入来导入char.py文件:
  4. 在main.py中,我们可以使用相对导入来导入char.py文件:
  5. 这里的"."表示当前目录,"char"表示要导入的模块名。这样就可以成功导入同一目录下的char.py文件了。
  6. 使用绝对导入: 绝对导入是指从项目的根目录开始导入其他模块。在同一目录下的.py文件中,可以使用绝对导入来导入其他.py文件。例如,假设我们有以下目录结构:
  7. 使用绝对导入: 绝对导入是指从项目的根目录开始导入其他模块。在同一目录下的.py文件中,可以使用绝对导入来导入其他.py文件。例如,假设我们有以下目录结构:
  8. 在main.py中,我们可以使用绝对导入来导入char.py文件:
  9. 在main.py中,我们可以使用绝对导入来导入char.py文件:
  10. 这里的"mypackage"表示项目的根目录,"char"表示要导入的模块名。这样就可以成功导入同一目录下的char.py文件了。

需要注意的是,如果我们在同一目录下的.py文件中使用了"main"作为模块名,即文件名为"main.py",那么在导入时需要将"main"替换为包名。例如,在上面的例子中,如果main.py文件名为"main.py",则导入语句应该为:

代码语言:txt
复制
from mypackage import char

总结起来,解决"ModuleNotFoundError:没有名为‘main.char’的模块"的方法是使用相对导入或绝对导入,并确保导入的文件路径和模块名正确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python 路径管理以及常见报错

.代表当前目录, ..代表父目录 工作目录 当前执行命令所在的目录 # 将工作目录添加进当前的路径列表 sys.path.append(os.getcwd()) 路径列表 查看当前路径列表 只有在路径列表当中的包和模块才可以导入和调用...'parser.search'; 'parser' is not a pac kage` 自定义包和内置包名有冲突 修改包名即可 导入的不是一个包 `ModuleNotFoundError: No module...named '__main__.jd_parser'; '__main__' is no t a package` 入口程序不可以使用相对路径 __main__ 主程序模块名会被修改为__main__...而不是根据目录结构 把工作目录加入到路径列表当中 进入到项目根目录下执行命令 上述两个操作相当于将项目根目录加入到路径列表当中 注意事项 确定入口程序, 没有一个锚定的路径就没有办法做相对路径的管理 将项目根目录加入到入口程序当中...进入到项目根目录下执行命令 项目目录结构不要嵌套的太深 脚本文件或者临时运行单个模块中的方法, 可以将根目录临时添加到路径列表当中

1.3K20

python中import星_Python imports 指北

pizza.py代码中的全局变量__name__设置成了没有.py后缀的文件名。 所以,事实是,__name__是保存当前Python模块名称的全局变量。...Python模块只是一个包含Python代码的文件 就像执行时一样,当模块被导入时,它的顶级语句也会被执行,但是要知道,即使从不同的文件中导入它几次,它也只会被执行一次。...所以导入时,即使使用import module as othername将模块名称重命名,模块名称仍然设置为不带.py扩展名的文件名 但是如果导入的模块不在同一个目录下,我们怎么导入呢?...要创建一个包,创建一个包含__init__.py文件的目录 请记住,程序包是模块的名称空间,因此您不会导入包本身,而是从包中导入模块。...自Python 3开始,所有导入都默认为绝对导入 - 它将首先查找系统包 但是如果你的软件包有一个名为sys的模块,并且你想把它导入到同一个包内的另一个模块中,你必须做相对的导入。

1.1K00
  • Python imports指南

    pizza.py代码中的全局变量__name__设置成了没有.py后缀的文件名。 所以,事实是,__name__是保存当前Python模块名称的全局变量。...Python模块只是一个包含Python代码的文件 就像执行时一样,当模块被导入时,它的顶级语句也会被执行,但是要知道,即使从不同的文件中导入它几次,它也只会被执行一次。...所以 导入时,即使使用import module as othername将模块名称重命名,模块名称仍然设置为不带.py扩展名的文件名 但是如果导入的模块不在同一个目录下,我们怎么导入呢?...要创建一个包,创建一个包含__init__.py文件的目录 请记住,程序包是模块的名称空间,因此您不会导入包本身,而是从包中导入模块。...自Python 3开始,所有导入都默认为绝对导入 - 它将首先查找系统包 但是如果你的软件包有一个名为sys的模块,并且你想把它导入到同一个包内的另一个模块中,你必须做相对的导入。

    98950

    解决python3中关于import的疑难杂症

    python中import与包管理 概念:模块与包 模块module:一般是以.py为后缀的文件,也包括.pyo、.pyc、.pyd、.so和.dll后缀的文件,模块内定义了函数、类以及变量 包package...:包是含有若干个模块的文件夹,在工程项目用包管理模块可以避免模块名冲突 __init__.py 在Python工程项目中,如果一个文件夹下有__init__.py文件就会认为该文件夹是一个包package...绝对导入与相对导入 绝对导入和相对导入的概念只针对于包内模块导入包内模块,注意如果foo.py和bar.py在同一个非包(没有__init__.py文件)的目录下,那么它们之间可以互相import,不存在绝对导入和相对导入的问题...如果只是导入一个包import package而不指名任何模块,且包中的__init__.py没有其他的初始化操作,那么包下面的模块是无法被自动导入的。 6....项目demo 假设当前你的工程文件目录如下(仅针对python3): 注意这里我的文件夹下并没有__init__.py,严格来讲它们并不是包,只是将联系紧密的模块放在同一个文件夹下方便工程项目管理。

    1.8K30

    模块(包、库)

    模块的基本概念:   模块是程序,它就是一个扩展名为.py的python程序。因此对于一个.py的python文件而言,既可以把它当作程序来执行,也可以将它作为模块引入。   ...导入一个模块时,python解释器会先自动在当前路径下搜索要导入的模块,如果没有找到,则会自动到python标准模块安装路径(python默认自带的)中搜索,如果还没找到,则报错ModuleNotFoundError...当一个.py文件作为模块被导入时,实际上会执行一次该文件。我们导入模块时,只是想要模块中的类、函数或者变量等,而并不是要真正的去执行该文件。...当文件作为模块导入时,则不会执行if __name__ == ‘__main__’中的内容;当文件作为.py文件执行或者调试时,就会执行if __name__ == ‘__main__’中的内容。...注意,每一个包中的__init__.py文件是必须存在的,否则,Python就会把这个目录当成普通目录(文件夹),而不是一个包。

    78750

    python--如何优雅的import

    通过上面的打印,os和random不是内置模块啊!chatGPT瞎说! 我质疑了一下,chatGPT知错就改 对不起,我可能没有表达清楚。...在Python中,os模块是标准库的一部分,而不是内置函数的一部分。 内置函数,如print()、len()等,是可以直接在Python代码中使用的,无需导入任何模块。...了解内置模块和标准库其实主要是想介绍下,import模块的查找顺序 首先导入内置模块,如果导入的不是内置模块,Python 会依次在 sys.path 这个数组中的每个路径中寻找。...import中的ModuleNotFoundError问题 上面介绍了import在查找模块的顺序,但是还是经常会遇到,明明路径是对的我都能找到文件,还是出现了ModuleNotFoundError的问题...首先我们先了解模块和包的区别: 模块(module) python中一个py文件就是一个模块,module_name.py中,module_name就是模块名 包(package) 包就是目录,包里面可以有

    1.1K191

    ModuleNotFoundError: No module named ‘config‘

    '"的错误消息时,意味着你尝试导入一个名为'config'的模块,但Python无法找到该模块。...模块没有正确安装由于没有安装正确的依赖模块,Python无法找到名为'config'的模块。解决此问题的步骤如下:确定你是否正确地安装了所需要的模块。...模块名称冲突有时候,你导入的模块与其他模块或Python内置模块的名称冲突,导致Python无法正确识别导入的模块。解决此问题的步骤如下:确保你导入的模块名称与其他模块没有冲突。...可以使用以下命令来安装:shellCopy codepip install flask在项目的根目录下创建一个名为'config.py'的Python文件,并添加以下配置代码:pythonCopy code...(比如app.py)中正确导入配置模块。

    1.2K70

    Python 的 import 是怎么工作的?

    Python 文档中这样描述,一个 Python 文件就是一个模块,Python 的文件名(不带后缀.py)就是模块名。...一旦模块或包被找到,就会执行该模块或包。如果包里面有初始化文件 __init__.py,导入的时候,会先执行 __init__.py。...会去 sys.path 查找就行了,如果遇到了 ModuleNotFoundError,思考一下为什么 sys.path 没有我们要导入的包,或者手动把这个包的路径插入到 sys.path 中去。...,方块的是目录,椭圆的是文件,曲线是引用: 其中 import_example 目录下有 setup.py 和 run.py run.py 导入了 file4、file5、file6。...,虽然 file3 被导入了两次,但只执行了一次,说明 Python 内部已经考虑了同一个包的多重导入问题。

    77910

    Python - 模块与包

    模块的定义:任何 *.py 的文件都可以当作模块使用 import 导入 包的定义:包含一个__init__.py和其他模块、其他子包的一个目录 实际项目中,所谓的包和模块分别代表什么,如下:...我们以上面这个目录讲解,在 run.py 文件中导入各个包的方式 导入单个test包 import test 导入report、log包 # 同时导入,用逗号隔开,墙裂推荐 import report,...:部分导入(针对性导入) 怎么区分它们的意思捏?我们来看看哈;在根目录下的 test 包下的 run.py 代码如下 #!...不是一个包 可以看到import的完全导入意思就是:导入最小单位是模块,而不是变量、函数名、类名 方式二:from .. import .. # from 包名.模块名 import 变量/函数/类名...-py3.6.egg'] 结论: 我们在Pycharm下import的包、模块,优先会在工程目录下寻找,找不到才会从Python默认安装路径下找

    66220

    python关于多级包之间的引用问题

    首先得明确包和模块。 包:在一个目录下存在__init__.py,那么该目录就是一个包。 模块:一个.py文件就是一个模块。...我们可以通过from 包 import 模块来引入python文件, 也可以使用from 包.模块 import 模块中的函数或类。 具体看一下例子。...test_aUitls函数 这里是package_b包中b_uitls包中的bUtils模块下的test_buitls函数 下一个,假设我们想在tmp4.py使用tmp3.py中的函数,因为在同一个包下...main.py里面导入了tmp4,tmp4里面调用了tmp3,我门运行tmp4.py是没问题,运行main.py有问题。...这是因为,相对于main.py所在的目录,tmp3所在是在包package_b下面,在tmp4中就不能直接导入,可以改写成以下方式: from .tmp3 import test_bTmp3 from

    79240

    一文搞懂 Python 的模块和包,在实战中的最佳实践

    我的项目结构 首先,我并不是一个经验丰富的 Python 开发者,一般像我这样水平的,要么用框架,以其预置的代码结构来管理代码文件和逻辑;要么,就是调包侠,将代码写在同一个或多个 .py 文件中,不用文件目录组织...在设计之初,我就考虑到了模块重名的问题,所以在 main.py 文件头部,我并没有 from 包 import 模块,而是 from 包 import 包,以避免模块命名冲突的问题。...那如果,导入的不是模块,而是一个包,比如 from spider import realtime,spider 和 realtime 都是文件夹,也就是包,那会执行什么代码呢?...后面如法炮制,live 目录下,也有两个模块文件:livelist.py 和 overview.py,同样需要在 __init__.py 文件中加入导入模块的代码: from . import livelist... 以脚本的方式运行模块时,此时 overview.py 所在的当前目录为 xxx/spider/realtime,于是 Python 解释器就会在 realtime 目录及其子目录下,去查找要导入的模块

    1.6K41

    Python类、模块、包的区别

    client被导入后,python解释器就在当前目录下寻找client.py的文件,然后再从环境变量PYTHONPATH寻找,如果这环境变量没有设定,也不要紧,解释器还会在安装预先设定的的一些目录寻找。...模块在被导入执行时,python解释器为加快程序的启动速度,会在与模块文件同一目录下生成.pyc文件。...包 通常包总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块。包目录下为首的一个文件便是 init.py。...* 如果包的__init__.py定义了一个名为__all__的列表变量,它包含的模块名字的列表将作为被导入的模块列表。...包是python模块文件所在的目录,且该目录下必须存在__init__.py文件。

    1.2K20

    Python3快速入门(四)——Pyth

    Python3快速入门(四)——Python包管理 一、Python包简介 1、包 Python中使用包管理模块,包通常对应一个目录,必须在目录下创建一个init.py模块,init.py模块的模块名称即为包名...导入包或包的模块、变量、函数时,init .py文件会被自动执行。 2、模块 Python中一个.py文件就是一个模块。...if __name__ == "__main__": function_name() 将一个模块文件作为模块执行而不是应用执行的命令如下: python3 -m package.module 二...,会在与模块文件同一目录下自动生成.pyc文件,.pyc是经过编译后的字节码。...6、init.py模块 init.py文件存在包的根目录下,当包或者包中的任意模块或模块中变量、函数被导入时,init.py中内容会首先自动被执行。

    1K21

    Python 学习入门(35)—— 模块

    对于每个模块的导入,python解释器只会导入一次,即使重复使用import和from…import语句,也只有在PVM检测到该模块没有被导入时才执行导入动作。...即使后来你修改了模块的源代码,但没有重启PVM,python解释器仍然是使用之前导入的内容在处理。...module_2.py 2 3 __main__ module_2.py 5 我们通过windows命令行直接执行module_2这个模块文件,可以看到的结果输入如上,打印的__name__值为__main...包(package),通过使用“点模块名称”创建Python模块命名空间的一种方法。例如,模块名称 A.B 表示一个在名为 A的包下的名为B的子模块。...(): print("This is funciton one") 注意第2步,必须要在每一个包目录下建立一个__init__.py的模块,这个是python的规定,用来告诉python解释器将该目录当成一个内容包

    74520

    Python中的import问题的本质理解

    /test_lib/lib2.py 这个__name__是模块名字(这是我的理解),显然如果直接运行,其模块名字就是__main__,而不是lib2。.../test_lib/lib1.py 显然,直接被运行的文件,其模块名为__main__,而不直接运行的,其模块名为对应的文件名。python是怎么根据lib2来找到对应的模块的呢?...(对于英语不好的我,理解有难度) 4. 小结 ---- 首先,需要分清两个概念: 包(package):__init__.py所在的目录。 模块:对应python文件。...而特别需要注意的是,直接被运行的python文件,其包名是None(顶级包)。 import的规则: 按sys.path中的路径顺序进行搜索。...使用相对导入的时候,这个相对的意义是相对于package,而不是相对于当前路径的。

    85210

    最全总结:把模块当做脚本来执行的 7 种案例及其原理

    通常来说模块或者包,都是用做工具包由其他模块导入使用,而很少直接使用命令来执行(脚本除外)。 Python 给我们提供了一种方法,可以让我们将模块里的部分功能抽取出来,直接用于命令行式的调用。...再看一下 json.tool 的源码文件,json 库下面却没有 __main__.py 的文件。 这就很奇怪了。...不对,再回过头看,我们调用的不是 json 库,而是 json 库下的 tool 模块。 查看 tool 模块的源代码,有一个名为 main 的函数 ?...在 demo 目录下再新建一个 foobar.py 文件 # foobar.py def main(): print("hello, world") if __name__ == "__main...之所以能这么便利,这得益于 Python 完善的导入机制,你完全不需要知道这个模块文件存在哪个目录下,它的绝对路径是什么?因为 Python 的包导入机制会帮你做这些事情。

    47520

    Python的绝对导入和相对导入

    Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的。包内导入即是包内的模块导入包内部的模块。...Python import 的搜索路径在当前目录下搜索该模块在环境变量 PYTHONPATH 中指定的路径列表中依次搜索在 Python 安装路径的 lib 库中搜索Python import 的步骤python...所谓的包,就是包含 __init__.py 文件的目录,该文件在包导入时会被首先执行,该文件可以为空,也可以在其中加入任意合法的 Python 代码。相对导入可以避免硬编码,对于包的维护是友好的。...有人可能会问:假如有两个模块 a.py 和 b.py 放在同一个目录下,为什么能在 b.py 中 import a 呢?...这是因为这两个文件所在的目录不是一个包,那么每一个 python 文件都是一个独立的、可以直接被其他模块导入的模块,就像你导入标准库一样,它们不存在相对导入和绝对导入的问题。

    4.4K32

    探寻Python导包路径机制

    Python解释器 从 sys.path 里依次查找要导入的模块文件或包 '' 表示当前路径 sys.path 列表中的路径的先后顺序代表了 Python解释器 在搜索模块时的先后顺序 内置模块、包存放路径...、import requests 等都可以找到相应的模块和包 如果导入模块和包时在 sys.path 中没有搜索到相对应的模块,则会报如下错误 ModuleNotFoundError: No module...现在 D:\Hui\Code\Python\demo 目录下有一个 aaa.py 模块。...因此导入users 应用的路径可以写为:meiduo_mall/apps/users 知道导包路径我们就好在配置文件 settings.py or develop.py 中注册子应用 INSTALLED_APPS...重新导入模块 模块被导入后,import module 不能重新导入模块,重新导入需用 imp 下的 reload from imp import reload 我们还是已上文提到的 aaa.py 模块举例

    1.2K10

    TensorFlow2.x目标检测API安装配置步骤详细教程

    https://github.com/tensorflow/models,将解压后的目录重命名保存到指定目录,下载 解压后是models-master文件夹,重命名为models,然后放到指定目录,比如...在python安装目录的Lib\site-packages下创建tensorflow.pth文件,在其中添加Object Detection API文件路径: D:\TensorFlow\models\...成功了会在D:\TensorFlow\models\research\object_detection\protos下面生成一些py文件 五、安装缺失模块。...在models/research目录下打开cmd窗口,输入python object_detection/builders/model_builder_tf2_test.py 回车运行会提示缺模块 ①...在TensorFlow\models\research目录下cmd运行python object_detection/builders/model_builder_tf2_test.py 如果没有报错,

    2.4K10
    领券