首页
学习
活动
专区
工具
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模块,并且你想把它导入同一另一个模块中,你必须做相对导入

96350

解决python3中关于import疑难杂症

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

1.6K30

模块、库)

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

76250

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) 就是目录,里面可以有

829191

ModuleNotFoundError: No module named ‘config‘

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

82270

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 内部已经考虑了同一多重导入问题。

72210

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默认安装路径下找

63720

python关于多级之间引用问题

首先得明确模块:在一个目录下存在__init__.py,那么该目录就是一个模块:一个.py文件就是一个模块。...我们可以通过from import 模块来引入python文件, 也可以使用from .模块 import 模块函数或类。 具体看一下例子。...test_aUitls函数 这里是package_b中b_uitlsbUtils模块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

74540

一文搞懂 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.5K41

解决python中import文件夹下面py文件报错问题

在需要导入那个文件夹里面新建一个 __init__.py文件,哪怕这个文件是空文件也可以....补充知识:python中import其他目录下文件出现问题解决方法 在使用python进行编程时候,import其他文件路径下.py文件时报错 Traceback (most recent call...ModuleNotFoundError: No module named ‘__main__.datasets’; ‘__main__’ is not a package 文件路径如下: D...: No module named ‘research’ 意思是找不到research,查阅解决方法后发现加一句 import os import sys ROOT_DIR = os.path.abspath...(‘D:\Pyproject\models-master’) sys.path.append(ROOT_DIR) 即可解决该问题 以上这篇解决python中import文件夹下面py文件报错问题就是小编分享给大家全部内容了

4.1K10

Python类、模块区别

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

1.1K20

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解释器将该目录当成一个内容

72120

Pythonimport问题本质理解

/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,而不是相对于当前路径

76710

最全总结:把模块当做脚本来执行 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 导入机制会帮你做这些事情。

42920

Python绝对导入和相对导入

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

3.9K21

探寻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.1K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券