python 动态导包

  • python 包简介
  • 基本导包/模块 import
  • 动态导包/模块 __import__   importlib

1. python 包简介

  • 包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
  • 简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。
  • Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句

2. 基本导包/模块 import

import 用于导入所需包/模块

import package #导包 

import module #导模块

form package import module #从包中导模块

from module import * #从模块中导入所有内容

还有其他的import方式:

import os, sys, time

from os import *

from os import path, walk, unlink

from os import uname, remove

from os import (path, walk, unlink, uname, 
                remove, rename)

from os import path, walk, unlink, uname, 
                remove, rename

更细节 import 参考:http://codingpy.com/article/python-import-101/

3. 动态导包/模块 __import__   importlib

__import__:系统函数__import__() 

__import__ (name[, globals[, locals[, fromlist[, level]]]])
  • name (required): 被加载 module 的名称
  • globals (optional): 包含全局变量的字典,该选项很少使用,采用默认值 global()
  • locals (optional): 包含局部变量的字典,内部标准实现未用到该变量,采用默认值 local()
  • fromlist (Optional): 被导入的 submodule 名称
  • level (Optional): 导入路径选项,默认为 -1,表示同时支持 absolute import 和 relative import
os = __import__('os')
# 相当于 import os
# import 导入本质上是调用 __import__ 加载
import foo

# 最终调用如下函数实现

# foo = __import__('foo', globals(), locals(), [], -1)

importlib:Python标准库中提供了importlib模块,目的是提供import语句(还有import())的底层实现,另外,importlib让程序员可以在导入过程中创建自己的对象。

imoprt importlib
#导入foo.py模块
foo = importlib.import_module('foo')
foo.main()

importlib详细参考:https://hatboy.github.io/2017/12/21/Python-importlib%E8%AE%B2%E8%A7%A3/

原文地址:https://www.cnblogs.com/yelao/p/11002465.html