首页 > 编程语言 >python模块导入规则(相对导入和绝对导入)

python模块导入规则(相对导入和绝对导入)

时间:2023-10-24 12:55:28浏览次数:30  
标签:d1p1 python py 导入 模块 根目录

  python模块可以相对导入和绝对导入,但这两者是不能替换使用的。本文主要讨论工作目录下模块之间的导入规则。其中相对导入前面有一个'.',表示从该脚本所在目录开始索引,而绝对导入前面没有'.',表示从根目录开始索引。首先明确一点,python认为的根目录为当前运行的脚本所在的目录,而不是vscode打开的工作目录的根目录。则基于python运行时的根目录,python模块导入主要依据以下三个规则:

  1、对于需要通过根目录的导入路径,必须使用绝对路径,否则出错。

  2、对于根目录以下子目录模块之间的导入,此时没有通过根目录,则必须使用相对路径,否则出错。

  3、无法导入根目录的父目录及以上目录中的模块。

  比如,vscode打开如下名为import_test的目录:

d1
--__init__.py
--d1p1.py
--d1p2.py
--d11
----__init__.py
----d11p1.py
----d11p2.py
d2
--__init__.py
--d2p1.py
--d21
----__init__.py
----d21p1.py
main.py

  当运行main.py时,此时根目录为import_test

  1、如果main.py需要导入d1p1.py中的模块,则必须使用绝对导入。

  2、如果d1p1.py需要导入d11p1.py中的模块,则必须使用相对导入。

  3、如果d1p1.py需要导入d2p1.py中的模块,则必须使用绝对导入。

  当运行时d1p1.py时,此时根目录为d1

  1、如果d1p1.py需要导入p11p1.py中的模块,则必须使用绝对导入。

  2、如果d11p1.py需要导入d11p2.py中的模块,则必须使用相对导入。

  3、如果d11p1.py需要导入d1p2.py中的模块,则必须使用绝对导入。

  4、d1p1.py无法导入d2目录下和main.py中的模块。

 

标签:d1p1,python,py,导入,模块,根目录
From: https://www.cnblogs.com/qizhou/p/17784429.html

相关文章

  • [数据分析与可视化] 基于Python绘制简单动图
    动画是一种高效的可视化工具,能够提升用户的吸引力和视觉体验,有助于以富有意义的方式呈现数据可视化。本文的主要介绍在Python中两种简单制作动图的方法。其中一种方法是使用matplotlib的Animations模块绘制动图,另一种方法是基于Pillow生成GIF动图。目录1Animations模块1.1FuncA......
  • Gradle构建SpringBoot单模块项目
    Gradle构建SpringBoot单模块项目方式Ⅰ:未基于:GradleWrapper方式Ⅱ:(推荐使用)GradleWrapper【可以不安装Gradle、统一Gradle的版本】——包括Maven也是一样的可以用Wrapper的方式版本:JDK8+SpringBoot2.7.15+Gradle8.x本篇主要讲实现。Gradle与Maven的区别自己去看Ⅰ、普......
  • Python标准库的入口
    Python有一套很有用的标准库(standardlibrary)。标准库会随着Python解释器,一起安装在你的电脑中的。它是Python的一个组成部分。这些标准库是Python为你准备好的利器,可以让编程事半功倍。 我将根据我个人的使用经验中,挑选出标准库三个方面的包(package)介绍:Python增强系......
  • python基础
    python环境搭建1、下载安装包-3.x-2.x下载官网:https://python.org/2、安装(傻瓜式安装,选择路径时选择下,其他都默认即可)python的交互界面再命令行输入python,进入到python的交互页面;再交互页面输入python命令,python解释器就会立即执行。pythonjingjing.py执行python文......
  • Python第八课——类
    将函数和数据封装起来,形成类,用类再来创建对象。比如我创建了小狗这一个类,然后创造了名为William,年龄6岁的小狗,这只狗就是对象。一、创建和使用类1、创建dog类以下是Python的类代码的基本结构:classClassName:#一些类的属性和方法def__init__(self,arg1,arg2,...):......
  • 【python笔记】杂乱版
    numpy.tile的作用importnumpyasnp#重复一个标量值scalar=5result1=np.tile(scalar,3)print(result1)#输出:[5,5,5]#重复一个数组arr=[1,2,3]result2=np.tile(arr,2)print(result2)#输出:[1,2,3,1,2,3]#在两个维度上进行不同次数的重......
  • 导入模块、打开工程
    导入:一、先把要导入的模块复制过去,然后再导入黑点。比如把E盘文件复制到D盘,然后复制D盘路径再从idea导入 二、或者直接建一个新模块,然后直接复制进去  打开工程   ......
  • 力扣每日一题+python知识点回顾(六)
    力扣题目:老人的数目(题号:2678)给你一个下标从0开始的字符串details。details中每个元素都是一位乘客的信息,信息用长度为15的字符串表示,表示方式如下:前十个字符是乘客的手机号码。接下来的一个字符是乘客的性别。接下来两个字符是乘客的年龄。最后两个字符是乘客的座位......
  • Python 数组和列表:创建、访问、添加和删除数组元素
    Python没有内置支持数组,但可以使用Python列表来代替。数组本页将向您展示如何使用列表作为数组,但要在Python中使用数组,您需要导入一个库,比如NumPy库。数组用于在一个变量中存储多个值:示例,创建一个包含汽车名称的数组:cars=["Ford","Volvo","BMW"]什么是数组?数组是......
  • 力扣每日一题+python知识点回顾(五)
    力扣题目:做菜顺序(题号:1402)一个厨师收集了他n道菜的满意程度satisfaction,这个厨师做出每道菜的时间都是1单位时间。一道菜的「like-time系数」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度,也就是time[i]*satisfaction[i]。返回厨师在准备了一......