包含pip的使用、注释文档、源码加密、ini配置、Logging模块等内容。
更换pip源到国内镜像
pip常用命令:
查询可用版本:pip insatall xx==
查看已经安装的Python软件包及其版本:pip freeze
/pip list
pip国内的一些镜像地址:
- 阿里云 http://mirrors.aliyun.com/pypi/simple/
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
- 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
- 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
临时使用:
使用 -i 指定源:
例: sudo pip3 install cython -i https://pypi.mirrors.ustc.edu.cn/simple/
永久修改:
Linux:修改 ~/.pip/pip.conf (没有就创建一个), 内容如下:
1
2[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
Windows:直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下
1
2[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
文档注释
在Python中,出现在模块、函数、类、方法定义下的第一个语句如果是注释,会自动变成属性__doc__。
通过访问__doc__属性可以得到注释文档,通过help()方法可以得到类以及类方法的所有信息,而__doc__则只包含类注释。
pydoc,是Python自带的一个文档生成工具。可以在线查看或者生成文件的html。
启动在线服务(python环境变量下的模块内容):
1 | python -m pydoc [-p 1234] |
直接输出类文档(test_py.py):
1 | python -m pydoc test_py |
生成html(test_py.py):
1 | python -m pydoc -w test_py |
查找模块(会在当前工程目录以及python环境变量目录下查找包含关键词的模块信息):
1 | python3 -m pydoc -k test_py |
查看包情况时,dir() 和 help() 函数非常有用:
1 | >>> import os |
注释风格
对文档字符串的惯例是使用三重双引号”“”,第一句是以句号, 问号或惊叹号结尾的概述,接着是一个空行(或者该文档字符串单纯只有一行), 接着是文档字符串剩下的部分。
以下是人们常用的几种注释文档风格:
javadoc
这是曾经比较流行的一直类似于javadoc的风格。
1 | """ |
reST
这是现在流行的一种风格,reST风格,Sphinx的御用格式。
1 | """ |
Google风格
1 | """ |
Numpy风格
1 | """ |
源码加密
Python 是以文本形式存储和运行的,在发布的时候常常需要将其加密。
我们使用 pyInstaller
方案来加密和生成可执行文件。pyinstaller可以运行在2.7和3.5版本,可在Windows、Linux、Mac OS X(64bit)等系统平台上运行。
以Linux
+ Python3.5
为例:
1 下载 pyInstaller
2 解压:tar -xzvf PyInstaller-3.4.tar.gz
3 配置
cd PyInstaller-3.4/bootloader
python ./waf distclean all
python setup.py install
4 生成加密执行文件
python3 pyinstaller.py --key "key" src_path/src_name.py
5 生成路径
src_name/dist/src_name
6 patch 版本
rm -rf *.so* Crypto
加载.ini配置文件
使用ConfigParser来加载.ini配置文件
如下配置信息:
1 | ; config.ini |
1 | from configparser import ConfigParser |
Logging
使用logging包来管理Log。
1 | import logging |
此设置,即设置了整个Python程序的Log输出格式,此设置会同时输出打印和保存到日志文件。
通过setLevel来设置日志级别:
- 10 - Debug
- 20 - Info
- 30 - Warning
- 40 - Error
- 50 - Critical
分别使用以下函数来使用日志输出:
- logging.debug()
- logging.info()
- logging.warning()
- logging.error()
- logging.critical()
数字越大越严重,当使用低级别时会默认打印此级别及以上级别日志,如使用Info级别是,会默认输出Waring、Error、Critical。
使用 logging.Formatter来设置日志格式,logging模块中定义好的可以用于format格式字符串说明:
使用字段 | 说明 |
---|---|
%(asctime)s | 将日志的时间构造成可读的形式,默认情况下是‘2016-02-08 12:00:00,123’精确到毫秒 |
%(name)s | 所使用的日志器名称,默认是’root’,因为默认使用的是 rootLogger |
%(filename)s | 调用日志输出函数的模块的文件名; pathname的文件名部分,包含文件后缀 |
%(funcName)s | 由哪个function发出的log, 调用日志输出函数的函数名 |
%(levelname)s | 日志的最终等级(被filter修改后的) |
%(message)s | 日志信息, 日志记录的文本内容 |
%(lineno)d | 当前日志的行号, 调用日志输出函数的语句所在的代码行 |
%(levelno)s | 该日志记录的数字形式的日志级别(10, 20, 30, 40, 50) |
%(pathname)s | 完整路径 ,调用日志输出函数的模块的完整路径名,可能没有 |
%(process)s | 当前进程, 进程ID。可能没有 |
%(processName)s | 进程名称,Python 3.1新增 |
%(thread)s | 当前线程, 线程ID/线程名称。可能没有 |
%(module)s | 调用日志输出函数的模块名, filename的名称部分,不包含后缀即不包含文件后缀的文件名 |
%(created)f | 当前时间,用UNIX标准的表示时间的浮点数表示; 日志事件发生的时间—时间戳,就是当时调用time.time()函数返回的值 |
%(relativeCreated)d | 输出日志信息时的,自Logger创建以 来的毫秒数; 日志事件发生的时间相对于logging模块加载时间的相对毫秒数 |
%(msecs)d | 日志事件发生事件的毫秒部分。logging.basicConfig()中用了参数datefmt,将会去掉asctime中产生的毫秒部分,可以用这个加上 |
Windows 弹窗
要在Python中实现Windows右下角的弹窗通知,可通过以下几种主流方案实现,各有适用场景和特点:
1. 使用 plyer
(跨平台推荐)
特点:支持Windows、macOS、Linux,无需针对系统单独适配。
安装:
1 | pip install plyer |
示例代码:
1 | from plyer import notification |
适用场景:需兼容多操作系统时优先选择。
2. 使用 win10toast
(Windows专属)
特点:仅支持Windows 10+,生成原生Toast通知,集成系统通知中心。
安装:
1 | pip install win10toast |
示例代码:
1 | from win10toast import ToastNotifier |
适用场景:仅需支持Windows且追求原生体验。
3. 使用 tkinter
(内置库,无需安装)
特点:Python标准GUI库,可自定义弹窗位置(如右下角),但非系统级通知。
示例代码:
1 | import tkinter as tk |
适用场景:需要高度自定义弹窗样式或位置时使用。
4. 使用 winsdk_toast
(高级定制)
特点:基于Windows SDK,支持复杂交互(如按钮、分组文本),适合深度定制。
安装:
1 | pip install winsdk_toast |
示例代码:
1 | from winsdk_toast import Notifier, Toast |
适用场景:需添加交互按钮或复杂布局的企业级应用。
方案对比与选择建议
库 | 适用平台 | 安装命令 | 特点 | 推荐场景 |
---|---|---|---|---|
plyer |
Windows/macOS/Linux | pip install plyer |
跨平台,简单易用 | 多系统兼容需求 |
win10toast |
Windows 10+ | pip install win10toast |
原生Toast通知 | 仅Windows,追求原生体验 |
tkinter |
内置无需安装 | - | 高度自定义界面 | 需特定位置/样式的弹窗 |
winsdk_toast |
Windows 8+ | pip install winsdk_toast |
支持交互按钮、复杂布局 | 企业级定制通知 |
💡 快速选择:
- 优先跨平台 →
plyer
- 仅Windows且需原生通知 →
win10toast
- 需自定义弹窗位置 →
tkinter
- 需按钮交互或高级样式 →
winsdk_toast
实际开发中,若仅需基础通知,推荐 plyer
或 win10toast
;若需深度集成Windows特性,可尝试 winsdk_toast
的XML模板定制(参考)。
一键启动服务器
用于快速共享当前目录的文件。
1 | python -m http.server [8000] |
8000
是默认端口号(可改为其他端口)。- 默认监听
0.0.0.0
(所有网络接口),添加--bind 127.0.0.1
可限制为本地访问。 - 访问:
http://localhost:8000