美文网首页
Python 模块、插件

Python 模块、插件

作者: 李霖弢 | 来源:发表于2019-12-11 09:45 被阅读0次

模块

在Python中,一个.py文件就称之为一个模块(Module)。
包含__init__.py文件的模块的目录称为包(Package)。__init__.py本身就是一个模块,直接调用包名时即调用该模块。
以模块形式调用该包或其下的模块时(如python -m 包名.模块名import 包名),会先调用__init__.py中的逻辑

通过import 包名.模块名from 包名 import 模块名的方式可以调用包下的模块。
类似的,可以有多级目录,组成多级层次的包结构。
注意模块名不要和系统模块名冲突(可以在Python交互环境执行import 模块名,若成功则说明系统存在此模块)

导入优先级:
  1. 同名包下的__init__.py模块
  2. 自定义的该模块 (即导入模块名.py文件)
  3. 系统自带的该模块
import 和 from import
  • 通过import 包名.模块名from 包名 import 模块名导入包下的指定模块。
    • 通过import 包名.模块名导入后,使用模块下的内容需要包名.模块名.内容名
    • 通过from 包名 import 模块名导入后,使用模块下的内容只需直接内容名
  • 通过from 包名 import *导入整个包,且此时包中的内容可以作为全局变量被调用。
  • 通过from 包名.模块名 import *导入整个模块,且此时模块中的内容可以作为全局变量被调用。
import tkinter
root = tkinter.Tk()  
from tkinter import *
root = Tk()  
  • 对于直接导入的模块可以通过模块名直接访问,对于自身模块只能通过sys.modules[__name__]访问
import sys
import tkinter as tk
print(tk.__dict__)
print(sys.modules[__name__].__dict__)

被导入的非内置模块会在工程根目录下的__pycache__目录下生成和py文件同名的以.cpython-**.pyc结尾的字节码文件(cpython是C语言实现的python解释器,**为其版本号),之后若再次执行该脚本,它先检查【本地是否有上述字节码文件】和【该字节码文件的修改时间是否在其源文件之后】,是就直接执行,否则重新加载

python -m 和 sys.path

sys.path是一个包含Python环境变量的list,当通过import引入模块时就会在sys.path目录中查找相应的模块

  • 当直接通过python 文件路径执行时,会把该文件路径加入sys.path
  • 通过python -m 模块名执行时,会把当前执行指令的路径加入sys.path
  • 通过sys.path.append()手动向sys.path中添加路径

__name__

当在命令行直接运行一个python模块时,Python解释器把一个特殊变量__name__置为__main__,如果通过模块引入并运行,则置为该模块名

__file__

该代码所在的文件路径(可能是绝对路径也可能是相对路径,由文件/模块被引入的方式决定)


模块文档

模块内的第一段str视为模块的文档,可以通过模块名·__doc__访问
同理,函数体内的第一段str也可以通过函数名.__doc__访问

pip安装第三方模块

pip是python的包管理工具。(pip对应python2,pip3对应python3)

pip install 包名
  • 换国内镜像源
pip install 包名 -i https://mirrors.aliyun.com/pypi/simple/

或修改配置文件

  1. 在windows文件管理器中,输入 %APPDATA%
  2. 会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件
  3. 在新建的pip.ini文件中输入以下内容
[global]
timeout = 6000
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com
  • 查看安装情况
pip show 包名
requirements.txt

requirements.txt是一个依赖库的列表,可以通过pip freeze > requirements.txt将本地所有包导出到该文档,也可以使用pipreqs仅仅将当前项目的依赖库导出到requirements.txt

pip install pipreqs
# 在当前目录生成requirements.txt,(--force表示如已存在则覆盖)
pipreqs . --encoding=utf8 --force

通过pip install -r requirements.txt可以安装requirements.txt中依赖的库。

Anaconda

Anaconda集成了python及其常用包,并做了版本管理。Anaconda安装的第三方模块会安装在Anaconda自己的路径下,不影响系统已安装的Python目录。

  • 在Anaconda的命令行窗口中,python指向自己自带的Python。
常用指令

在cmd中需要输入conda前缀,在conda中可以省略

  • 查看版本 conda --version
  • 升级版本 conda update conda
  • 帮助信息 conda --help
  • 创建一个名为MyPython3的子环境,其中拥有python3.7.4、numpy、Django2.2包。(如果不指定python版本则默认安装当前anaconda具有的版本)
conda create -n MyPython3 python=3.7.4 numpy Django=2.2
proceed([y]/n)? y 
  • 切换到子环境 conda activate 环境名
  • 退出子环境 conda deactivate
  • 查看子环境列表 conda env list
  • 删除环境 conda remove --name <env_name> --all
  • 复制环境 conda create --name <new_env_name> --clone <copied_env_name>
  • 精确查找包 conda search --full-name <package_full_name>
  • 模糊查找包 conda search <text>
  • 获取当前环境已安装包 conda list
  • 在当前环境安装包(也可以用pip) conda install <package_name>
  • 从当前环境卸载包 conda remove <package_name>
  • 更新所有包 conda update --all
  • 更新指定包 <package_name>

常用的第三方库

可以在 awesome-python 这个网站上按照分类去寻找

  • Pillow 图像处理
  • requests 接口处理
  • chardet 检测编码类型
  • psutil 获取系统信息

相关文章

网友评论

      本文标题:Python 模块、插件

      本文链接:https://www.haomeiwen.com/subject/pyuegctx.html