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())

 

posted @ 2023-06-13 11:59  小匡程序员  阅读(11)  评论(0编辑  收藏  举报