Python import导入上级目录文件的方法

 更新时间:2023年01月18日 10:50:53   作者:我行我素,向往自由  
这篇文章主要介绍了Python import导入上级目录文件,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

假设有如下目录结构:

-- dir0
  | file1.py
  | file2.py
  | dir3
   | file3.py
  | dir4
   | file4.py

dir0文件夹下有file1.py、file2.py两个文件和dir3、dir4两个子文件夹,dir3中有file3.py文件,dir4中有file4.py文件。

1.导入同级模块

python导入同级模块(在同一个文件夹中的py文件)直接导入即可。

import xxx

如在file1.py中想导入file2.py,注意无需加后缀".py":

import file2
# 使用file2中函数时需加上前缀"file2.",即:
# file2.fuction_name()

2.导入下级模块

导入下级目录模块也很容易,需在下级目录中新建一个空白的__init__.py文件再导入:

from dirname import xxx

如在file1.py中想导入dir3下的file3.py,首先要在dir3中新建一个空白的__init__.py文件。

-- dir0
  | file1.py
  | file2.py
  | dir3
   | __init__.py
   | file3.py
  | dir4
   | file4.py

再使用如下语句:

# plan A
from dir3 import file3

或是:

# plan B
import dir3.file3
# import dir3.file3 as df3

但使用第二种方式则下文需要一直带着路径dir3书写,较为累赘,建议可以另起一个别名。

3.导入上级模块

要导入上级目录下模块,可以使用sys.path:  

import sys 
sys.path.append("..") 
import xxx 

如在file4.py中想引入import上级目录下的file1.py:

import sys 
sys.path.append("..") 
import file1

sys.path的作用:当使用import语句导入模块时,解释器会搜索当前模块所在目录以及sys.path指定的路径去找需要import的模块,所以这里是直接把上级目录加到了sys.path里。

“..”的含义:等同于linux里的‘..’,表示当前工作目录的上级目录。实际上python中的‘.’也和linux中一致,表示当前目录。

4.导入隔壁文件夹下的模块

如在file4.py中想引入import在dir3目录下的file3.py。

这其实是前面两个操作的组合,其思路本质上是将上级目录加到sys.path里,再按照对下级目录模块的方式导入。

同样需要被引文件夹也就是dir3下有空的__init__.py文件。

-- dir
  | file1.py
  | file2.py
  | dir3
   | __init__.py
   | file3.py
  | dir4
   | file4.py

同时也要将上级目录加到sys.path里:

import sys
sys.path.append("..")
from dir3 import file3

5.常见错误及import原理

在使用直接从上级目录引入模块的操作时:

from .. import xxx

经常会报错:

ValueError: attempted relative import beyond top-level package

这是由于相对导入时,文件夹实质上充当的是package,也就是包的角色(比如我们常用的numpy、pandas都是包)。如果python解释器没有认同该文件夹是package,那么这就是一个普通的文件夹,无法实现相对导入。

文件夹作为package需要满足如下两个条件:

  1. 文件夹中必须存在有__init__.py文件,可以为空。

    1. 不能作为顶层模块来执行该文件夹中的py文件。

到此这篇关于Python import导入上级目录文件的文章就介绍到这了,更多相关Python import导入上级目录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python装饰器基础概念与用法详解

    Python装饰器基础概念与用法详解

    这篇文章主要介绍了Python装饰器基础概念与用法,结合实例形式详细分析了Python装饰器的概念、功能、用法及相关操作注意事项,需要的朋友可以参考下
    2018-12-12
  • 对pandas中时间窗函数rolling的使用详解

    对pandas中时间窗函数rolling的使用详解

    今天小编就为大家分享一篇对pandas中时间窗函数rolling的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • 利用nohup来开启python文件的方法

    利用nohup来开启python文件的方法

    今天小编就为大家分享一篇利用nohup来开启python文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 基于Python实现中秋佳节月饼抢购脚本

    基于Python实现中秋佳节月饼抢购脚本

    这篇文章主要介绍了Python版中秋佳节月饼抢购脚本,今天要用的是一个测试工具的库Selenium,今天我们就是用它去实现自动化抢购月饼,其实就是用这个工具"模拟"人为操作浏览器相应的操作,比如登陆,勾选购物车商品,下单购买等等操作,需要的朋友可以参考下
    2022-09-09
  • 100 个 Python 小例子(练习题四)

    100 个 Python 小例子(练习题四)

    这篇文章主要给大家分享100 个 Python 小例子,前文分享了一二三,本文的四十最后一篇了,这篇就把100道python小练习全分享完了,感兴趣的小伙伴也可以去练习前几期内容,洗碗给这几篇文章给你的学习带来帮助
    2022-01-01
  • python实现rest请求api示例

    python实现rest请求api示例

    这篇文章主要介绍了python实现rest请求api示例,需要的朋友可以参考下
    2014-04-04
  • python实现判断一个字符串是否是合法IP地址的示例

    python实现判断一个字符串是否是合法IP地址的示例

    今天小编就为大家分享一篇python实现判断一个字符串是否是合法IP地址的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • python实现批量视频分帧、保存视频帧

    python实现批量视频分帧、保存视频帧

    这篇文章主要为大家详细介绍了python实现批量视频分帧、保存视频帧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Python实现用户登录注册

    Python实现用户登录注册

    这篇文章主要为大家详细介绍了Python实现用户登录注册,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • PYQT5设置textEdit自动滚屏的方法

    PYQT5设置textEdit自动滚屏的方法

    今天小编就为大家分享一篇PYQT5设置textEdit自动滚屏的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论