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

ModuleNotFoundError:没有名为“src”的模块。不使用sys.path从另一个目录导入模块,并从现有目录执行它们

ModuleNotFoundError是Python中的一个错误类型,表示无法找到指定的模块。当我们尝试从另一个目录导入模块时,如果Python解释器无法找到该模块所在的路径,就会抛出这个错误。

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

  1. 添加模块所在目录到sys.path:可以使用sys.path.append()将模块所在的目录添加到sys.path中,这样Python解释器就能找到该模块。例如:
代码语言:txt
复制
import sys
sys.path.append('/path/to/module')
import module_name
  1. 使用相对导入:如果模块位于当前目录的子目录中,可以使用相对导入来引入模块。例如,如果模块位于当前目录的src子目录中,可以使用以下方式导入:
代码语言:txt
复制
from .src import module_name
  1. 设置PYTHONPATH环境变量:可以将模块所在的目录添加到PYTHONPATH环境变量中,这样Python解释器会在搜索模块时查找该目录。例如,在Linux或Mac系统中,可以使用以下命令设置PYTHONPATH:
代码语言:txt
复制
export PYTHONPATH=/path/to/module

以上是解决ModuleNotFoundError的几种常见方法。根据具体情况选择适合的方法来解决该错误。关于Python模块导入的更多信息,可以参考Python官方文档

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

解决python3中关于import疑难杂症

module字典,第二次加载该module时可以直接字典中查找,加快执行速度。...绝对导入与相对导入 绝对导入和相对导入概念只针对于包内模块导入包内模块,注意如果foo.py和bar.py在同一个非包(没有__init__.py文件)目录下,那么它们之间可以互相import,不存在绝对导入和相对导入问题...如果只是导入一个包import package而指名任何模块,且包中__init__.py没有其他初始化操作,那么包下面的模块是无法被自动导入。 6....项目demo 假设当前你工程文件目录如下(仅针对python3): 注意这里我文件夹下并没有__init__.py,严格来讲它们并不是包,只是将联系紧密模块放在同一个文件夹下方便工程项目管理。...尽量不要使用相对引用 Python3建议使用相对引用,最好遵循一定开发规范,不要在代码中混用绝对引用与相对引用。

1.7K30

python--如何优雅import

对于这些模块, 我们只需要使用import语句就可以导入使用它们。 例如: python import os print(os.name) 这段代码会打印出你操作系统名称。...了解内置模块和标准库其实主要是想介绍下,import模块查找顺序 首先导入内置模块,如果导入不是内置模块,Python 会依次在 sys.path 这个数组中每个路径中寻找。...在模块导入时,可以是import module,或者from package import module 我们查看下python执行搜索顺序 import sys print(sys.path) ['...named 'package' 分析这里,执行文件目录是E:\my_code\test_import\src 在这个目录直接from package import test_class ,当然找不到.../src/main.py没问题 通过添加sys.path方式也太粗暴了。。。 如上情况,我们通常做法不是直接执行python .

954191
  • Python import 是怎么工作

    attempted relative import with no known parent package 导入同一个目录模块和不同目录模块是完全不同,本文通过分析使用 import 经常遇到一些问题...一个 module 可以包含变量、函数和类,它们是该 module 定义命名空间一部分,因此变量命名问题不是问题,因为两个不同模块可以有同名变量、函数和类。...- os.getcwd(),仅仅依赖第一个脚本所在路径: 3、如果一个模块导入另一个模块,而后者又导入另一个模块,则第一个模块 sys.path 是解释器搜索第二个导入语句位置。...会去 sys.path 查找就行了,如果遇到了 ModuleNotFoundError,思考一下为什么 sys.path 没有我们要导入包,或者手动把这个包路径插入到 sys.path 中去。...file5.py 可以看出,相对导入已经正常工作: 结论 如果是当做脚本文件直接运行使用绝对导入 如果是当做模块供其他文件导入使用相对导入 3、一个自定义包例子 先上一个图来看下目录及引用结构

    76710

    python中import星_Python imports 指北

    这非常简单 - 模块是一个包含Python代码文件,可以使用解释器(python程序)执行其他模块导入。...当你导入模块时,它会被执行 因为模块只是纯文件,所以有一个简单方法来导入它们。 只取文件名,去掉.py扩展名并将其放入import语句中。...要创建一个包,创建一个包含__init__.py文件目录 请记住,程序包是模块名称空间,因此您不会导入包本身,而是包中导入模块。...自Python 3开始,所有导入都默认为绝对导入 - 它将首先查找系统包 但是如果你软件包有一个名为sys模块,并且你想把它导入到同一个包内另一个模块中,你必须做相对导入。...Python模块搜索路径在运行时可作为sys.path 如果将模块作为脚本文件运行,则将包含该模块目录添加到sys.path中,否则,会将当前目录添加到sys.path中 当人们将一堆测试或示例脚本放在主包相邻目录或包中时

    1.1K00

    python基础教程:模块高级技巧

    Python模块搜索路径 当一个名为mylib模块导入时,解释器首先搜索内置模块是不是有该名字模块。 如果没有找到,接着搜索sys.path列出目录下面是不是有名为mylib模块。...sys.path初始化按以下几个路径顺序: (1)包含输入脚本目录,如果没有输入脚本则是当前目录; (2)环境变量PYTHONPATH(一个目录名称列表); (3)Python库安装目录...这样就会导致你写模块与系统模块重名时,它import是系统模块而不是你写模块,而前面两种方式就是导入你写模块而非系统模块。这一点在使用IPython时要格外注意。...(2)如果我们导入m1模块时,搜索路径目录下只有m1.pyc而没有m1.py文件,那就直接导入m1.pyc。...这种方式适合把编译好pyc发布给其他人而不是给它们源代码,使用这种方式时,把.pyc文件__pycache__中拷贝到.py文件相同目录下并删掉.py文件即可。

    79710

    Python基础:创建并使用自定义模块

    1.与访问模块Python文件位于同一目录中。 2.在另一个目录中,该目录必须添加到Python解释器路径中。 3.在Python解释器任意默认路径内。...导入同一目录自定义模块 在你创建newmodule.py文件相同目录中创建另一个名为mainfile.py文件。 要导入自定义模块,可以使用import语句后跟模块名称。...sys.path列表包含这些路径列表。 可以使用append()方法将新路径添加到Python解释器可访问路径列表中。之后,可以导入模块并访问其函数,如下所示。...创建另一个名为newmodule3.py模块,将其存储在site-packages文件夹中。...newmodule3如下所示: newmodule3 def find_product(num1, num2): return num1 * num2 下面的脚本导入newmodule3模块并从模块执行

    1.2K40

    Python imports指南

    这非常简单 - 模块是一个包含Python代码文件,可以使用解释器(python程序)执行其他模块导入。...当你导入模块时,它会被执行 因为模块只是纯文件,所以有一个简单方法来导入它们。 只取文件名,去掉.py扩展名并将其放入import语句中。...要创建一个包,创建一个包含__init__.py文件目录 请记住,程序包是模块名称空间,因此您不会导入包本身,而是包中导入模块。...自Python 3开始,所有导入都默认为绝对导入 - 它将首先查找系统包 但是如果你软件包有一个名为sys模块,并且你想把它导入到同一个包内另一个模块中,你必须做相对导入。...Python模块搜索路径在运行时可作为sys.path 如果将模块作为脚本文件运行,则将包含该模块目录添加到sys.path中,否则,会将当前目录添加到sys.path中 当人们将一堆测试或示例脚本放在主包相邻目录或包中时

    98650

    Python面试常见问题集锦:基础语法篇

    模块导入特定成员:from module_name import member,直接使用member访问。...模块导入所有成员:from module_name import *(推荐,可能导致命名冲突)。...**答案:**Python包是一种特殊目录结构,用于组织多个相关模块。包目录结构包含一个名为__init__.py(即使为空)文件,该文件标志着该目录为一个包。...问题4:解释Python模块搜索路径(sys.path)及其作用。 答案: sys.path是一个列表,包含了Python解释器在导入模块时会查找目录列表。...当使用import语句导入模块时,Python会按照sys.path目录顺序依次查找对应.py文件或包。如果找到匹配模块文件或包,就进行导入;否则抛出ModuleNotFoundError

    18310

    Python面试常见问题集锦:基础语法篇

    模块导入特定成员:from module_name import member,直接使用member访问。...模块导入所有成员:from module_name import *(推荐,可能导致命名冲突)。...答案:Python包是一种特殊目录结构,用于组织多个相关模块。包目录结构包含一个名为__init__.py(即使为空)文件,该文件标志着该目录为一个包。...答案: sys.path是一个列表,包含了Python解释器在导入模块时会查找目录列表。当使用import语句导入模块时,Python会按照sys.path目录顺序依次查找对应.py文件或包。...如果找到匹配模块文件或包,就进行导入;否则抛出ModuleNotFoundErrorsys.path初始内容通常包括以下几个部分:当前脚本所在目录(对于交互式环境,为当前工作目录)。

    13610

    Pythonimport vs from ... import

    如果还没找到,Python会在sys.path定义目录列表中查找。这个列表中通常包含当前目录,会首先查找当前目录。 如果找到了module_name,会将其绑定到局部命名空间中,后面可以使用。...如果没找到,则会抛出ModuleNotFoundError。 注: 导入模块之后,可以通过模块__file__属性来获取模块所在目录,其是sys.path目录之一。...执行import 之后,放到了调用者局部符号表里,但模块中定义对象仍在模块私有符号表里。访问模块中定义对象需要使用.符号。...,命令执行之后,模块对象被引用到调用者环境中,可以直接对其访问,而不需要添加模块前缀。...,因此这里不对其进行详细介绍,也推荐这种使用方式。

    1.7K10

    python 模块定义、导入、优化

    _name (导入多个模块) 3. from module_name import * (推荐使用) 4. from module_name import m1 as name_m1 (导入指定函数或变量并重命名...) 5. from module_name import m1,m2,m3 (导入模块多个函数或变量) 第3种办法,推荐使用。...调用变量,使用 module_name.变量名 调用函数,使用 module_name.函数名() from本质 把导入模块指定函数或者变量,放到当前文件位置,执行一遍。...包: 用来逻辑上组织模块,本质就是一个目录(必须带有一个__init__.py文件) 导入本质: 去执行目录__init__.py文件 使用pycharm编辑器,新建一个包package_test...文件,而这个文件是空 修改__init__.py文件,当前目录下,导入test1模块 这个 点 表示相对于__init__.py文件路径。

    1.6K10

    python 路径管理以及常见报错

    .代表当前目录, ..代表父目录 工作目录 当前执行命令所在目录 # 将工作目录添加进当前路径列表 sys.path.append(os.getcwd()) 路径列表 查看当前路径列表 只有在路径列表当中包和模块才可以导入和调用...import sys print(sys.path) 路径搜索顺序 当前脚本路径, 也就是执行文件目录 PYTHONPATH路径 虚拟环境路径 site-packages 安装第三方库所在路径...named '__main__.jd_parser'; '__main__' is no t a package` 入口程序不可以使用相对路径 __main__ 主程序模块名会被修改为__main__...而不是根据目录结构 把工作目录加入到路径列表当中 进入到项目根目录执行命令 上述两个操作相当于将项目根目录加入到路径列表当中 注意事项 确定入口程序, 没有一个锚定路径就没有办法做相对路径管理 将项目根目录加入到入口程序当中...进入到项目根目录执行命令 项目目录结构不要嵌套太深 脚本文件或者临时运行单个模块方法, 可以将根目录临时添加到路径列表当中

    1.3K20

    探寻Python导包路径机制

    Python解释器 sys.path 里依次查找要导入模块文件或包 '' 表示当前路径 sys.path 列表中路径先后顺序代表了 Python解释器 在搜索模块先后顺序 内置模块、包存放路径...、import requests 等都可以找到相应模块和包 如果导入模块和包时在 sys.path没有搜索到相对应模块,则会报如下错误 ModuleNotFoundError: No module...追加之后,在试试 追加导包路径之后就可以成功导入使用了。...重新导入模块 模块导入后,import module 不能重新导入模块,重新导入需用 imp 下 reload from imp import reload 我们还是已上文提到 aaa.py 模块举例...[6]: aaa.test() 重新导入模块测试 In [7]: 因此 aaa 模块导入后,import aaa 不能重新导入模块,重新导入使用如下方式 # 没修改前 In [21]: import

    1.2K10

    ModuleNotFoundError: No module named ‘config‘

    模块没有正确安装由于没有安装正确依赖模块,Python无法找到名为'config'模块。解决此问题步骤如下:确定你是否正确地安装了所需要模块。...确保模块所在路径在Python模块搜索路径中。可以使用​​sys.path​​查看Python模块搜索路径。...模块名称冲突有时候,你导入模块与其他模块或Python内置模块名称冲突,导致Python无法正确识别导入模块。解决此问题步骤如下:确保你导入模块名称与其他模块没有冲突。...例如,如果存在名为'config'模块冲突,但你想导入是一个名为'project.config'模块,那么你可以使用​​import project.config​​来导入。...在我们项目中,我们希望使用一个名为'config'模块来管理网站配置信息,但在导入时出现了"ModuleNotFoundError: No module named 'config'"错误。

    1.1K70

    在Python中如何随心所欲使用自定义模块

    1.与访问模块Python文件位于同一目录中 2.在另一个目录中,该目录必须添加到Python解释器路径中 3.在Python解释器默认路径内。...导入相同目录自定义模块 创建另一个名为mainfile.py文件,位于与刚创建newmodulepy文件在同一目录中。mainfile.py文件将在本文中用于测试自定义模块功能。...可以在sys.path列表中任何路径中添加自定义模块。很多人喜欢将自定义模块存储在包含site-packages目录中。...下面创建另一个名为newmodule3.py模块并将其放置在site-packages目录中。...将经常使用函数存储在它们自己自定义模块中是一种很好做法,这样就不必在每次编写新Python脚本时都重新构建它们。这是一种非常好方法,可以让你代码井然有序、简洁明了,让外部用户更容易理解。

    2.1K10

    python历险记之模块导入

    注:使用python版本为3.7。 在任何语言中,依赖管理都是最基础。在 python 中也例外。这里我们要从模块和包说起。 模块和包 模块 .py 为后缀文件视为一个模块。...查找器:默认有3个,按照内置模块(python官方模块等)-> 冻结模块-> import path(来自 sys.path,包括当前模块所在目录,以及自行加入目录等)路径查找。...方式来包含指定导入模块。. 代表当前包所在目录,.. 为上级目录。只能使用 from xxx import xxx 方式导入。因为 .moduleY 不是一个有效表达式。...加入 sys.path 中,否则会找不到,因为python仅会当前包目录开始查找。...在当前模块执行时,.代表是__name__变量;在被其他模块导入执行时,. 表示原模块文件名。因此在用 . 相对路径引入时候,直接执行会报错。

    20910

    Python基础13-模块使用

    1.会产生一个模块名称空间 2.执行文件spam.py将执行过程中昌盛名字都放到模块名称空间中 3.在当前执行文件名称空间中拿到一个模块名,该名字指向模块名称空间   多次导入没有太大用处...print(money) print(read1) print(read2) print(change) # *代表导入模块中拿到所有名字(推荐使用) from spam import * print...ps:python解释器在启动时会自动加载一些模块到内存中,可以使用sys.modules查看 2、如果没有,解释器则会查找同名内建模块 3、如果还没有找到就从sys.path给出目录列表中依次寻找...官网解释 搜索路径: 当一个命名为spam模块导入时 解释器首先会内建模块中寻找该名字 找不到,则去sys.path中找该名字 sys.path以下位置初始化 1 执行文件所在的当前目录...,包含软连接目录不会被添加到模块搜索路径中 在初始化后,我们也可以在python程序中修改sys.path,执行文件所在路径默认是sys.path第一个目录,在所有标准库路径前面。

    37730

    学了半天,import 到底在干啥?

    毫无疑问,大量现成又好用内置/第三方库功不可没。 那我们是怎么使用它们呢? 噢,对了~是用import xxx这个语句。...theta.py: # main/main.py from B import theta 显然会导致我们所希望问题,即Python不知道要到哪里去找这个名为B模块(包是一种特殊模块): Traceback...也正是因此,我们可以在同一个目录下,大大方方地调用其他模块。 3. 将模块与名字绑定 找到相应非亲生模块还没完,加载了包还得为它分配一个指定名字,我们才能在脚本中使用这个模块。...,但是说了半天,我们问题还没有解决:在项目中如何简洁地跨模块导入其他模块?...在使用PyCharm时候倒是一切顺遂,因为PyCharm会自动将项目的根目录加入到导入搜索路径,也就是说像下面这样项目结构,在任意模块中都可以很自然地通过import A导入模块A,用import

    83630

    python导入父级别目录

    一、同级目录调有 程序结构如下: – src |– mod1.py |– test1.py 若在程序test1.py中导入模块mod1, 则直接使用 import mod1...一、python中包介绍 包是通过使用“点模块名称”创建Python模块命名空间一种方法。列如,模块名称 A.B 表示一个在名为 A包下名为B模块。...这个是必须,如果指定,则我们在python交互模式下导入module_3.py这个模块时会报如下错误: import pkg.module_3 Traceback (most...盘并不在python模块搜索路径中,然后我们动态增加这个路径到搜索模块中,再执行导入: sys.path.append(“E:\”) print(sys.path)...中增加了E盘根目录作为搜索路径,随后打印中可以看到确实已经被添加到sys.path中去了,然后再执行导入就会正常导入模块执行模块语句了。

    3.7K10
    领券