Python 从相对路径下import的方法

 更新时间:2018年12月04日 09:22:29   作者:耀凯考前突击大师  
今天小编就为大家分享一篇Python 从相对路径下import的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

例如我们有如下结构的文件:

pkg/
 __init__.py
 libs/
 some_lib.py
 __init__.py
 components/
 code.py
 __init__.py

如果我们想要在code.py中调用libs/some_lib.py这个module,比如使用相对调用:from ..libs.some_lib import something,仅仅在package中加上__init__.py是不够的。python会返回ValueError: Attempted relative import in non-package这个错误。那么这个问题如何解决呢?

有以下解决方法:

将当前路径加入sys.path

考虑到compontent和libs是处于同一级别的文件夹,我们可以直接在code.py中加入如下代码来把当前文件夹的母文件夹加入系统路径。

import sys
from os import path
sys.path.append( path.dirname( path.dirname( path.abspath(__file__) ) ) )

或者如下(这种情况对任何关系的文件夹都适用,只要我们在lib_path中给出到达该文件夹的绝对路径):

import os, sys
lib_path = os.path.abspath(os.path.join('..'))
sys.path.append(lib_path)

这样我们就可以用from libs.some_lib import something来import了。

以package模式执行该代码:

python -m pkg.components.code

然后我们就可以用from ..libs.some_lib import something 来import了。

注意这里不需要.py作为文件结尾。

总结

我们实际上可以结合这两种方法:

if __name__ == '__main__':
 if __package__ is None:
  import sys
  from os import path
  sys.path.append( <path to the package> )
  from libs.some_lib import something
 else:
  from ..libs.some_lib import something

以上这篇Python 从相对路径下import的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 用Python实现大文本文件切割的方法

    用Python实现大文本文件切割的方法

    今天小编就为大家分享一篇用Python实现大文本文件切割的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • POC漏洞批量验证程序Python脚本编写

    POC漏洞批量验证程序Python脚本编写

    这篇文章主要为大家介绍了POC漏洞批量验证程序Python脚本编写的完整示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • python线程中的同步问题及解决方法

    python线程中的同步问题及解决方法

    这篇文章主要介绍了python线程中的同步问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 基于Python编写一个监控CPU的应用系统

    基于Python编写一个监控CPU的应用系统

    在使用电脑办公时,有时候不知道哪些软件或进程会占用大量的资源,导致进行其他任务时出现变慢、卡顿等现象。因此,实时监控系统的资源就变得非常重要。本文用Python编写了一款超治愈的RunCat监控应用系统,需要的可以参考一下
    2022-06-06
  • python中如何提高图像质量

    python中如何提高图像质量

    这篇文章主要介绍了python中如何提高图像质量问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • PyInstaller 完美打包 Python 脚本

    PyInstaller 完美打包 Python 脚本

    PyInstaller 是一个用于将 Python 脚本打包成可执行文件的工具,支持 Windows、Linux 和 macOS 等多个平台。它可以将 Python 脚本及其依赖项打包成一个独立的可执行文件,方便用户在没有 Python 环境的机器上运行程序。
    2023-06-06
  • Python与C++中梯度方向直方图的实现

    Python与C++中梯度方向直方图的实现

    在学习HOG特征的时候,发现一片英文文章讲得浅显易懂。因此翻译在这里学习,感兴趣的朋友快来看看吧
    2022-03-03
  • python数据分析之单因素分析线性拟合及地理编码

    python数据分析之单因素分析线性拟合及地理编码

    这篇文章主要介绍了python数据分析之单因素分析线性拟合及地理编码,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • python 缺失值处理的方法(Imputation)

    python 缺失值处理的方法(Imputation)

    这篇文章主要介绍了python 缺失值处理的方法(Imputation),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python实现处理Excel数据并生成只读模式

    Python实现处理Excel数据并生成只读模式

    这篇文章主要为大家详细介绍了如何使用 Python 处理 Excel 数据,并生成只读模式的 Excel 文档,文中的示例代码简洁易懂,有需要的小伙伴可以参考下
    2023-11-11

最新评论