首页 > 编程语言 >Python import常见用法 & 父目录引用子目录py文件 & 子目录引用父目录py文件

Python import常见用法 & 父目录引用子目录py文件 & 子目录引用父目录py文件

时间:2023-01-11 15:37:03浏览次数:43  
标签:py 子目录 module 引用 test import 目录

关于Python的import你要知道的种种

常见用法

  1. 引入模块import <模块名>,例如import os

  2. 引入模块并起别名import <模块名> as <模块别名>,例如import numpy as np

  3. 引入部分函数、变量或类from <模块> import <要引入的>,例如from sys import path

解决项目中不同路径关系下py文件相互引用的问题

测试工程目录结构:

$ tree
.
├── module_1
│   ├── test_import_2.py
│   └── test.py
├── module_2
│   ├── test_import_3.py
│   └── test.py
├── test_import_0.py
└── test_import_1.py

2 directories, 6 files

总结起来两句话:

  • 若要引用子目录上的py文件(例如test_import_1.py要引用module_1文件夹下的test_import_2.py),需要将被引文件所在目录升级为为模块,即在被引文件的目录下创建__init__.py
# 此时的module1目录下的目录树为:
├── module_1
│   ├── __init__.py
│   ├── test_import_2.py
│   └── test.py
  • 若要引用父目录上的py文件(例如test_import_2.py要引用父目录文件夹下的test_import_1.py),需要将该父目录添加到当前文件的sys.path
# 此时的test_import_2.py文件中有:
import sys
sys.path.append("..") #相对路径或绝对路径

举个栗子,module_2文件夹下的test_import_3.py要引用module_1文件夹下的test_import_2.py

  1. 分析 test_import_3.py要引用其父目录下另一子目录中的文件(读起来绕但是好理解)
  2. 将父目录添加到test_import_3.pysys.path
# in test_import_3.py
import sys
sys.path.append("..")
  1. 将子目录提升为模块,即在module_1文件夹下新建__init__.py
# module目录下的目录树
├── module_1
│   ├── __init__.py
│   ├── test_import_2.py
│   └── test.py

注意:引用进来的变量名为module_1.test_import_2

不同引用方式下引用函数或变量是否为相同? ——> 相同

测试样例:test_import_0.py引用test_import_1.py文件中的函数及变量

  • test_import_0.py文件
import test_import_1
from test_import_1 import test_function
from test_import_1 import test_var

if __name__ == '__main__':
    if test_function == test_import_1.test_function:
        print("same function")
    else:
        print("different function")
    if test_var == test_import_1.test_var:
        print("same var")
    else:
        print("different var")
  • test_import_1.py文件
def test_function():
    return "123"

test_var = "123"
 

标签:py,子目录,module,引用,test,import,目录
From: https://www.cnblogs.com/lidabo/p/17043882.html

相关文章