• python在不同层级目录import模块的方法


    使用python进行程序编写时,经常会使用第三方模块包。这种包我们可以通过python setup install 进行安装后,通过import XXX或from XXX import yyy 进行导入。不过如果是自己遍写的依赖包,又不想安装到python的相应目录,可以放到本目录里进行import进行调用;为了更清晰的理清程序之间的关系,例如我们会把这种包放到lib目录再调用。本篇就针对常见的模块调用方法汇总下。

    一、同级目录下的调有

    程序结构如下:


    -- src
        |-- mod1.py
        |-- test1.py


    若在程序test1.py中导入模块mod1, 则直接使用

    import mod1

    from mod1 import *;

    二、调用子目录下的模块


    程序结构如下:

    -- src
        |-- mod1.py
        |-- lib
        |    |-- mod2.py
        |-- test1.py


    这时看到test1.py和lib目录(即mod2.py的父级目录),如果想在程序test1.py中导入模块mod2.py ,可以在lib件夹中建立空文件__init__.py文件(也可以在该文件中自定义输出模块接口),然后使用:

    from lib.mod2 import *

    import lib.mod2.


    三、调用上级目录下的文件


    程序结构如下:

    -- src
        |-- mod1.py
        |-- lib
        |    |-- mod2.py
        |-- sub
        |    |-- test2.py


    这里想要实现test2.py调用mod1.py和mod2.py ,做法是我们先跳到src目录下面,直接可以调用mod1,然后在lib上当下建一个空文件__init__.py ,就可以像第二步调用子目录下的模块一样,通过import  lib.mod2进行调用了。具体代码如下:

    import sys
    sys.path.append("..")
    import mod1
    import mod2.mod2


    四、多级目录下的文件


    程序结构如下:

    ├── jd
    │   ├── __init__.py
    │   ├── api
    │   │   ├── __init__.py
    │   │   ├── aa.py
    │   │   └── rest
    │   │   ├── __init__.py
    │   │   └── bb.py
    │   └── base.py

    实现方式:

    把 jd 这个目录的绝对路径添加到 PYTHONPATH,然后可以 import base 或 from base import xx

    ###:export PYTHONPATH=<root dir>:$PYTHONPATH

    参考文档:

    1 https://www.cnblogs.com/luoye00/p/5223543.html  

  • 相关阅读:
    Leetcode645.Set Mismatch错误的集合
    Leetcode622.Design Circular Queue设计循环队列
    Leetcode628.Maximum Product of Three Numbers三个数的最大乘积
    Leetcode633.Sum of Square Numbers平方数之和
    Leetcode617.Merge Two Binary Trees合并二叉树
    Leetcode606.Construct String from Binary Tree根据二叉树创建字符串
    SQL Sever实验二 交互式 SQL
    [bzoj2124]等差子序列_线段树_hash
    [bzoj4084][Sdoi2015]双旋转字符串_hash
    [bzoj1708][Usaco2007 Oct]Money奶牛的硬币_动态规划_背包dp
  • 原文地址:https://www.cnblogs.com/dylancao/p/9050669.html
一二三 - 开发者的网上家园