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

Python - 从子文件夹执行绝对导入

在Python中,执行绝对导入可以通过以下方式实现:

  1. 使用sys.path.append()方法将子文件夹添加到系统路径中。
代码语言:python
复制
import sys
sys.path.append('/path/to/your/subfolder')

import your_module
  1. 使用绝对路径导入模块。
代码语言:python
复制
import importlib.util
spec = importlib.util.spec_from_file_location("your_module", "/path/to/your/subfolder/your_module.py")
your_module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(your_module)
  1. 使用imp模块导入模块。
代码语言:python
复制
import imp
your_module = imp.load_source('your_module', '/path/to/your/subfolder/your_module.py')

请注意,以上方法可能会导致导入的模块不会被正确处理,例如,模块的相对导入可能会出现问题。因此,建议在使用绝对导入时,尽量避免使用相对导入。

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

相关·内容

Python绝对导入和相对导入

Python 相对导入绝对导入,这两个概念是相对于包内导入而言的。包内导入即是包内的模块导入包内部的模块。...Python 解释器判断一个 py 文件属于哪个 package 时并不完全由该文件所在的文件夹决定。它还取决于这个文件是如何 load 进来的(直接运行 or import)。...有且只能有一个 top-level 脚本,就是最开始执行的那个(比如 python myfile.py 中的 myfile.py)。...作为 module 作为 module 是指,执行 python -m myfile,或者在其它 py 文件中用 import 语句来加载,那么它就会被当作一个 module。...所谓的包,就是包含 __init__.py 文件的目录,该文件在包导入时会被首先执行,该文件可以为空,也可以在其中加入任意合法的 Python 代码。相对导入可以避免硬编码,对于包的维护是友好的。

4K21

Python相对、绝对导入浅析

这里之所以会报错就是因为__package__为空字符串则表示这是一个顶层的常规Python源码模块(top-level module),那么此时如果再有relative导入那么就没法进行模块的定位了。...code 4:如果是relative导入,那么需要计算相对的锚点是哪个,例如在spam.foo.test模块中执行import ..sub那么最后计算得出需要导入的模块是spam.sub。 ...spam中执行import foo,那么会要先尝试导入spam.foo(我们上面代码中标注的code 1),如果失败了则再执行absolute导入foo(我们上面代码中标注的code 2)。 ...stuff) #code 3 if parent: setattr(parent, partname, m) return m 这个函数是执行导入的核心函数...,前面我们介绍的各种函数都是最终通过import_it()来执行最后的导入

1.2K70

Python】对绝对导入与相对导入的理解的补充

相对导入 ---- 在前一篇文章对相对导入的“相对”其实已经讲得比较清楚了,关键的一点是,“相对”是相对package的意思。...绝对导入 ---- 前一篇已经提到,理解绝对导入,最重要的就是理解sys.path这个环境变量,绝对导入的时候,会按顺序在这个path指定的路径中查找。...所以: 在test.py文件中调用lib1.py可以使用绝对引用:from test_lib.lib1 import func1; 而在lib1中引用lib2的时候,就要使用相对引用了:from .lib2...建议的选择 ---- 前面已经看到了,无论是相对导入,还是绝对导入,都是有缺陷的,那我们已经怎么选择呢? 我的建议:优先使用相对导入。...也就是说,通过星号导入的只能是__all__变量定义的对象。 不过建议在导入的时候,不要使用星号。

1.2K30

Python小技之自定义不同文件夹下模块导入问题

一般在写一个项目的时候, 为了将项目模块化, 更加的清晰明了, 会将不同功能的模块放入不同的文件夹 项目如下: ├── spider │ └── spider.py # 爬虫文件 └── utils...spider.py内容如下: from ..utils.downloads import download download() 一切看起来都是那么美好 当你试图运行 问题一出现: cd spider python3...spider.py 会得到: # 相对导入超出顶级包错误 Traceback (most recent call last): File "spider.py", line 7, in <module...sys.path.append("../") 输出: > import download 问题二: mgd, 终于解决了, but, 一般爬虫脚本, 要用crontab或其他定时调用脚本时, 要使用绝对路径...在根目录或家目录下试一下: python3 /Users/msw/Desktop/wx_post/py_module/spider/spider.py 结果, 不出意外, 咦~~~~~~~ Traceback

1.1K20

Python】模块导入 ⑤ ( 主程序判断语句 | 模块中执行函数问题 | 制作自定义模块并执行函数 | 导入自定义模块会执行模块中的代码 )

with exit code 0 2、导入自定义模块会执行模块中的代码 在主代码中 , 导入自定义模块 ; """ 自定义模块 代码示例 """ # 导入自定义模块 import my_module...执行上述代码 , 结果如下 , 没有调用 my_module 模块中的函数 , 但是该函数还是触发了 ; D:\001_Develop\022_Python\Python39\python.exe D...0 这是因为 import 导入模块 , 将模块中的所有代码一次性拷贝到了该代码位置 , 执行该代码 , 即执行了 my_module 中的所有代码 ; 3、主程序判断语句 Python 中 提供了..., Python 会将模块的代码执行一遍 , 但是主程序的入口会被设置为导入该模块的模块的代码 ; 而当一个模块作为独立的主程序运行时 , Python 会直接执行该模块的代码 ; 为了区分这两种情况...; 此时再次执行 """ 自定义模块 代码示例 """ # 导入自定义模块 import my_module 主代码 , 执行结果为 , 没有触发模块中的可执行代码执行 ; D:\001_Develop

16810

Python】模块导入 ⑥ ( `__all__` 变量简介 | `__all__` 变量用法 | import 导入整个模块 - 执行阶段报错 | from 导入整个模块 - 编译阶段报错 )

一、__all__ 变量简介 1、__all__ 变量 Python 语言中的 __all__ 变量 是一个 列表 数据容器 , 用于控制 本应用 导入的 模块 中 可以使用 导入模块 的哪些 变量 /...函数 / 类 ; Python 模块 被 应用导入时 , 系统会检查该模块是否定义了 __all__ 变量 : 如果有 定义 __all__ 变量 , 那么导入 该 __all__ 变量 列表 元素...列表 元素 对应的 变量 / 函数 / 类 功能 ; 3、import 导入整个模块 - 执行阶段报错 使用 import module_name 导入整个模块 , 在执行阶段报错 , 如 : Unresolved...reference 'minus' 4、from 导入整个模块 - 编译阶段报错 使用 from module_name import * 导入整个模块 , 在编译阶段直接报错 , 无法执行 ;...- 编译阶段报错 如果使用 from my_module import minus 导入没有定义在 __all__ 变量 中的函数 , 则在编译阶段会报错 ; 在执行时 , 也会报错 NameError

24120

使用Python3.10以上执行《实战Python设计模式》示例程序时,发生Iterable导入错误

现象 在Python3.10条件下执行《实战Python设计模式》示例程序PyExcutorMain时会发生以下错误: File "E:\PythonWork\37959\PyExecutor\PyExecutor...collections import Iterable,Iterator ImportError: cannot import name 'Iterable' from 'collections' (D:\Python...\Python3.10\lib\collections\__init__.py) 原因 Python版本兼容问题 解决方法 打开Foundation目录下的Iterators.py,进行如下修改:...#from collections import Iterable,Iterator from collections.abc import Iterable,Iterator 作者著作介绍 《实战Python...设计模式》是作者出版的技术书籍,该书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。

59320

python 学习笔记(8)——python绝对路径相对路径

Python中以绝对路径或者相对路径导入文件的方法 1、在Python中以相对路径或者绝对路径来导入文件或者模块的方法    今天在调试代码的时候,程序一直提示没有该模块,一直很纳闷,因为我导入文件一直是用绝对路径进行导入的...') # 表示当前所处的文件夹绝对路径 print(path1) path2=os.path.abspath('.....') # 表示当前所处的文件夹上一级文件夹绝对路径 print(path2) # D:/PycharmProjects/mnistCheck/AbsolutepathAndrelativepath.py...然后调用方式如下:   下面程序执行方式均在程序文件所在目录下执行,如test2.py是在cd sub;之后执行python test2.py 而test1.py是在cd src;之后执行python...test1.py; 不保证在src目录下执行python sub/test2.py成功。

5.2K40

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

:包是含有若干个模块的文件夹,在工程项目用包管理模块可以避免模块名冲突 __init__.py 在Python工程项目中,如果一个文件夹下有__init__.py文件就会认为该文件夹是一个包package...绝对导入与相对导入 绝对导入和相对导入的概念只针对于包内模块导入包内模块,注意如果foo.py和bar.py在同一个非包(没有__init__.py文件)的目录下,那么它们之间可以互相import,不存在绝对导入和相对导入的问题...在Python3中建议使用绝对导入。...但是前者被称为隐式相对导入,后者被称为显式相对导入,方法三是绝对导入(会在sys.path中的路径搜索) 对于python3而言,方法二是相对导入,方法一和方法三都是绝对导入,官方更推荐方法三 5....包导入 包的导入和模块导入基本一致,只不过导入包时会执行__init__.py。

1.6K30

解决Python导入自己写的类,被划红线,但不影响执行的问题

错误描述 之前在学习Python的过程中,导入自己写的包文件时,与之相关的方法等都会被划红线,但并不影响代码执行,如图: ?...而pycharm中,当前的项目文件夹 是默认的source root,当你使用import语句导入模块时,Pycharm默认在project folder中寻找; 所以当你在project folder...下的某个subfolder导入某个同样定义在这个subfolder中的模块时,会出现导入错误。...右键目录名 点击make_directory as — sources path 将当前工作的文件夹加入source_path就可以了。步骤如下图: ?...以上这篇解决Python导入自己写的类,被划红线,但不影响执行的问题就是小编分享给大家的全部内容了,希望能给大家一个参考。

1K40

一文搞懂文件操作与异常模块

大家重点的精力都放在如何写出高大上的算法,如何画出酷炫的图形,如何使用机器学习模型等等,而常常容易忽略Python文件操作与异常处理,这两个看似不起眼却在python中却担着至关重要的角色。...\n") 文件路径 当Python运行open()函数时,它会在存储正在执行的程序的同一目录中查找文件。可以使用相对路径从子文件夹中打开文件。也可以使用绝对路径来打开系统中的任何文件。...从子文件夹中打开文件 f_path = "text_files/alice.txt" with open(f_path) as f_obj: lines = f_obj.readlines()...for line in lines: print(line.rstrip()) 使用绝对路径打开文件 f_path = "/home/ehmatthes/books/alice.txt" with...has {1} lines.".format( f_name, num_lines) print(msg) 避免空的except块 异常处理代码应该捕获在程序执行期间预期发生的特定异常

93510

Python导入模块包原理及相关注意事项

它是一系列模块文件的结合体,表示形式就是一个文件夹 ​ 该文件夹内部通常会有一个__init__.py文件 ​ 包的本质还是一个模块 3.首次导入包发生的事情 首次导入包: 先产生一个执行文件的名称空间...5.python2和Python3中导入包注意事项 python2如果要导入包 包下面必须要有__init__.py文件 python3如果要导入包 包下面没有__init__.py文件也不会报错...from aaa.bbb.m3 import f5 print(f5) print(f5()) 5.相对导入绝对导入 绝对导入:必须以执行文件的搜索路径为基准,比如上面的from aaa.bbb.m3...import f5 ​ 相对导入: ​ .表示当前文件夹下的文件 ​ ..表示父亲文件夹下的文件 ​ ...表示爷爷文件夹下的文件 5.1相对导入引入事例 ?...,而不是被直接运行的 包内部模块之间的导入可以使用绝对导入(以包的根目录为基准)与相对导入(以当前被导入的模块所在的目录为基准),推荐使用相对导入 当文件是执行文件时,无法在该文件内用相对导入的语法,只有在文件被当作模块导入

1.4K10

一日一技:导入文件夹中的模块并读取当前文件夹内的资源

摄影:产品经理 产品经理独自在深圳吃的早餐 在某些特殊情况下,我们的 Python 脚本需要调用父目录下的其他模块。例如: ?...现在,我直接在 scripts 文件夹里面运行run.py会报错,提示从包的最顶层之外相对导入。 现在,我们改一下代码,尝试在scripts 文件夹的父文件夹中运行代码,发现还是会报错: ?...现在我们在~/test_import_father_module执行python3 scripts/run.py,那么当前的工作区就是~/test_import_father_module。...现在无论是读取资源文件还是导入模块,都已经正常了。 我们再回到 scripts 文件夹执行看看: ? 发现也能正常执行。...总结 涉及到模块导入相关的环境,可以通过在sys.path添加绝对路径来解决。涉及到读取资源文件的相关环境,可以通过使用os.chdir修改工作区为另一个绝对路径来解决。

2K30

Python 从相对路径下import的方法

有以下解决方法: 将当前路径加入sys.path 考虑到compontent和libs是处于同一级别的文件夹,我们可以直接在code.py中加入如下代码来把当前文件夹的母文件夹加入系统路径。...,只要我们在lib_path中给出到达该文件夹绝对路径): import os, sys lib_path = os.path.abspath(os.path.join('..')) sys.path.append...以package模式执行该代码: python -m pkg.components.code 然后我们就可以用from ..libs.some_lib import something 来import了...您可能感兴趣的文章: Python引用(import)文件夹下的py文件的方法 详解Python中的相对导入绝对导入 浅谈Python2、Python3相对路径、绝对路径导入方法 理解Python中的绝对路径和相对路径...python根据路径导入模块的方法

2.9K71

软件测试|Python基础之模块导入和使用

图片Python模块导入和使用模块1、简介本质:模块是指内部具有一定功能(代码)的py文件2、模块的表现形式1、py文件(py文件也可以称之为是模块文件)2、含有多个py文件的文件夹(按照模块功能的不同划分不同的文件夹储存...py文件内部调用就可使用3、第三方模块是从网络上下载的模块,此类模块功能比较强大,是python背后的大佬进行编写,上传后供我们使用的模块导入模块的句式1、执行文件:运行代码的主文件2、被导入文件:指存放模块的文件...,若自定义模块和内置模块名冲突时,系统只会执行内置模块功能,执行自定义模块功能时,系统会报错图片执行python所在的sys.path(系统环境)当我们导入的模块在上述空间中都没有找到时,pycharm...的方式来将模块文件导入执行文件的目录中图片绝对导入与相对导入绝对导入绝对导入是指以执行文件所在目录为绝对路径的方式,将模块地址导入到py文件中导入方式:from 模块地址 import 模块名称/名称空间名字图片相对导入这种导入方式不是以...py文件的集合专业:内部含有 init.py文件的文件夹

61610

Python-模块

模块导入的顺序 6、补充知识 判断文件类型: 循环导入 绝对导入与相对导入 Python-模块 1、前言 在python中,一个py文件就是一个模块,可以作为模块被导入和引用,在python中使用模块会使得程序结构更加清晰...的C或C++扩展 包好一组模块的包(文件夹)(包里面通常有一个双下init.py文件) 使用C编写并链接到python解释器的内置模块 3、import句式 想导入py文件,只需要使用import语句即可...注意:多次导入相同模块,只会执行一次 3、第三方模块 第三方模块示例: python内的第三方模块,需要下载,只要找到想下载的模块,通过pip即可安装,在pycharm安装也非常方便,另外给大家推荐...例如: 修改方法: 调整顺序: 调用函数 绝对导入与相对导入 在程序中涉及到多个文件之间导入模块的情况,一律按照执行文件所在的路径为准 绝对导入 始终按照执行文件所在的sys.path...相对导入能够打破以执行文件为准的规则,只考虑两个文件之间的位置 相对导入只能用在模块文件中,不能在执行文件中使用 注意,在自定义模块名的时候,不要和内置模块名相

31820
领券