python入门笔记
pip批量安装
#安装和卸载 pip wheel -w package_tmp_dir -r requirement.txt pip download -d package_tmp_dir -r requirement.txt #离线下载 pip install -r requirement.txt pip uninstall package #安装源: pip install -i https://pypi.douban.com/simple/ package_name #阿里云:http://mirrors.aliyun.com/pypi/simple/ #豆瓣:https://pypi.douban.com/simple/ #配置 pip3 config [<file-option>] list pip3 config [<file-option>] get command.option pip3 config [<file-option>] set command.option value pip3 config [<file-option>] unset command.option
包安装流程
场景:execJS不存在需要安装,但是直接 pip install execJS,会返回找不到包资源;
通过下列方式搜索,实际上安装命令是:pip install PyExecJS2;
百度搜索: pypi 包名 官方扩展包资源站:https://pypi.org/ --复制 安装命令
python项目工程化
包:文件夹(含__init__.py)
模块: py文件
虚拟环境:
python3.3开始支持
#安装 #Windows 中venv已经以标准库的形式存在,不用再单独安装 #Linux sudo apt-get install python3-venv # 如有不同版本的Python3,可指定具体版本venv:python3.5-venv #创建虚拟环境 python3 -m venv fastapi_test #激活虚拟环境 source <环境名称>/bin/activate #关闭虚拟环境 deactivate
virtualEnv(支持python2 和 python3,需要安装包):参考https://www.jianshu.com/p/e680b4f15663
引入包和模块
包查找顺序
1,搜索的一个顺序是:sys.modules 缓存 -> sys.path[0] 即当前目录查找 -> sys.path[1:]路径查找。
2,Python 通过查找 sys.path 来决定包的导入,Python解释器启动时加载的模块缓存 > 同级目录 > sys.path[1:]。
3,Python 中的特有属性 __file__ 以及 sys.argv[0]、sys.argv[0]、sys.modules 可以帮助分析包的查找和导入过程。
4,模块被加载的时候,其中非函数或类的语句,例如 print('hello')、name=michael等,是会在 import的时候,默认就执行了。
import sys
#可以查看包的导入顺序
print(sys.path)
#可以查看已导入包缓存
print(sys.builtin_module_names)
查看包列表
1,pip list
# pip列出安装的包 pip list # pip查看是否已经安装, pip show --files 安装包名 pip show --files jieba Name:SomePackage # 包名 Version:1.0 # 版本号 Location:/my/env/lib/pythonx.x/site-packages # 安装位置 Files: # 包含文件等等 ../somepackage/__init__.py [...] # pip检查哪些包需要更新 pip list --outdated # pip升级包 pip install --upgrade 要升级的包名 # pip卸载包 pip uninstall --upgrade 要卸载的包名
2,模块别名
import myapi as oldname
包问题排查
1,包名冲突:经常碰到且容易忽略
2,Python 执行一个 py 文件,无论执行的方式是用绝对路径还是相对路径,
interpreter 都会把文件所在的 directory 加入 sys.path 这个 list 中,并且是索引为 0 的位置。Python 就是在 sys.path 中查找包和模块的。
# import sys # sys.path.append('..') import site print(site.getsitepackages())