python笔记-模块与包

导入模块

在使用模块之前,必须要在编写代码的文件中导入模块

使用关键字 import
示例:导入os模块

import os

导入多个模块

# ①可以在import后接模块名,以英文逗号隔开
import random,os,request,math

#②每个模块单独使用import关键字导入
import random
import os
import request
import math

导入模块后,查看当前环境导入的模块
dir()

import random
print(dir())

输出:

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'random']

要查看导入的模块的所有方法,通过 dir(模块名) 来查看

import random
print(dir(random))

输出:该模块的所有类、方法和属性

['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_inst', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']

导入包

包是在同一组相同文件夹中放置了许多模块文件,这个文件夹称为包,也可以称为类库。每一个包中必须至少有一个__init__.py文件

包中可以包含子包。子包中也要有__init__.py文件

导入整个包

import packageName

导入包中的模块或子包

imporrt packageName .module

在包中导入某个模块或子包,导入顺序必须遵从文件的路径信息

导入语句from...import...

从模块,导入类、方法、属性等
from 后接模块名称,
import 后接要导入的类或者方法名

重名名模块与包

对导入的模块和包进行重新命名,使用关键字as即可实现
关键字as只能对某个包或某个模块文件进行命名

import random as rd

重新加载模块与包

在不中断程序的情况下,当导入模块或包的代码发生变化后,程序不会实时更新。Python提供了importlib模块的 reload() 方法重新加载模块或包

文件a.py

def run():
    return 10

文件 b.py

import a
import time
from importlib import reload
if __name__=='__main__':
    while 1:
        reload(a)
        v=a.run()
        print("b模块的run()返回值为:",v)
        time.sleep(30)

运行 b.py文件后,修改a.py的返回值为 22
输出:

b模块的run()返回值为: 10
b模块的run()返回值为: 10
b模块的run()返回值为: 22

动态添加模块与包

通过内置函数__import__()方法实现

语法:

__import __(name, globals, locals, fromlist, level)

必选参数为:name。字符类型:string通常直接用name即可

import os
import time
from importlib import reload

#导入了reload函数,实现重新加载模块

if __name__=='__main__':
    this_file=os.path.split(__file__)[-1]#截取当前文件路径的文件名
    
    while 1:
        #os.listdir(os.getcwd())
        for f in os.listdir(os.getcwd()):#遍历当前文件夹中所有文件的列表
            if '.py' in f and f !=this_file:# 筛选后缀为.py的文件,并且排除当前文件
                file_name = f.split('.')[0]#截取a文件的文件名,不要后缀
                print("要导入的文件为",file_name)
                new_import = __import__(file_name)#使用__inmport__函数动态导入模块
                
                reload(file_name)
                
                v = new_import.run()#调用模块的方式
                print("b模块的run()返回值为:",v)
                
        time.sleep(30)

输出

要导入的文件为 a 
b模块的run()返回值为: 22

__file__属性 查看模块的源文件路径

在模块文件中运行:

print(__fiele__)

返回当前模块的文件路径

d:/TestFile/CodePractice/ReptilePractice-12/test1227/b.py

查看指定模块的源文件路径

模块名. __file__

打包/安装自定义模块与包;

当完成某些功能开发,并把这些功能封装成模块或包的时候,如果想把这些功能分享给其他人使用,就需要进行打包。

别人拿到你打包好的模块,需要安装才能进行调用

打包

内置模块包 setuptools 可以将自定义的模块或包打包成.whl文件;

打包步骤:
1. 在项目的根目录下,添加 setup.py 文件

在test文件夹下添加一个mypack文件夹,再添加一个 setup.py 文件
ee52b02de1bb356bcf1cc5236047ac5a.png

2. 在 setup.py 文件中编写脚本代码,指定打包的名称,版本,作者等属性
使用打包模块setuptools 的内置函数 setup 函数

from setuptools import setup

setup(
    name='mypackage1', #包名称
    version='1.0',    #版本
    description='This is my practice.',# 打包程序的功能描述
    py_modules=['a','b'],   #要打包的py模块文件
    packages=['mypack'],  #打包的模块或者包路径
)
  1. 在根目录运行构建命令(看网上的教程有这一步,但是我没有执行也没有关系)
    4. 运行打包命令
    在命令行进入setup.py 文件所在的文件夹,运行下方命令查看setuptools的帮助信息
python setup.py --help-commands

运行:

python setup.py sdist bdist_wheel

5. 查看生成dist目录下就是完成的包
18c58ddc029b882e24fdbab270edded9.png

打包命令

打包成wheel文件

sdist bdist_wheel

打包成压缩包

sdist

安装自定义的包

安装压缩包
进入压缩包所在目录运行

pip install XXXX.tar.gz

或者(安装wheel文件):

pip install XXx.whl

也可以直接安装(这个应该是在打包的根目录运行。我还没有试过)

python setup.py install

通过pip list 命令查看当前安装的所有包,能看到我自己打的包
fd5d0a32944a8be9c51869eee7f175e9.png

安装第三方模块与包

Python包的管理工具 pip,提供了对模块或包的查找、下载、安装、卸载等功能

运行

pip help

查看帮助信息

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  config                      Manage local and global configuration.
  search                      Search PyPI for packages.
  cache                       Inspect and manage pip's wheel cache.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion.
  debug                       Show information useful for debugging.
  help                        Show help for commands.

常用的方法:
install、安装包(参数 -r 根据requirements文件批量安装依赖,-e 安装可编辑的包;-t 安装到指定位置)
download、下载
uninstall、卸载
list 查看已安装的所有包和模块

pip install packagesname

freeze指令

pip管理工具提供了freeze指令,该指令能将当前环境安装第三方模块或包的信息写入requirements.txt ;在新环境中执行 install requirements.txt 文件, pip工具就会批量安装文件中的包和模块

进入文件目录运行:

pip freeze > requirements.txt

当前文件夹自动生成 quirements.txt文件;
将文件复制到新环境并运行:

pip install -r requirements.txt

程序会自动执行安装

posted @ 2021-12-27 17:50  深海鱼香茄子  阅读(80)  评论(0)    收藏  举报