1.PIP 的命令
install 安装软件包
download 下载软件包
uninstall 卸载软件包
freeze 按照requirements 格式输出安装包,可以到其他服务器上执行
pip install -r requirements.txt 直接安装软件。
list 列出当前系统中的安装包。
show 查看安装包的信息,包括版本,依赖,许可证,作者,主页等信息。
check :pip 9.0.1 提供的最新子命令,检查安装包的依赖是否完成。
search 查找安装包
wheel :打包软件到whell 格式。
hash :计算安装包的hash值。
completion:生成命令补全配置。
help :获取 pip 和子命令的帮助信息。
pip search flask
pip install flask==0.8
pip uninstall flask
--查看安装包的信息
pip show flask
--检查依赖
pip check flask
--查看已安装的安装包列表。
pip list
--导出系统已经安装的安装包列表到 requirements.txt 文件。
pip freeze > requirements.txt
--从 requirements.txt 文件安装
pip install -r requirements.txt
--使用 pip 补全命令。
pip completion --bash >>~/.bash_profile
source ~/.bash_profile
2.加速pip 安装技巧
pypi.python.org 不稳定,慢或者不可以用。
可以选择阿里云或者豆瓣的镜像。
pip install -i https://pypi.douban.com/simple/ flask
可以将 pip 的镜像源写入 pip 的配置文件。
~/.pip/pip.conf
vi pip.conf
[global]
index-url = https://pypi.douban.com/simple
3.将软件下载到本地安装部署
(1)下载到本地。
pip install --download=`pwd` -r requirements.txt
(2)本地安装
pip install --no-index -f file://`pwd` -r requirements.txt
pip 能够解决依赖问题,如果我们下载flask 到当前目录下, 则 flask
的依赖 click,itsdangerous,Jinja2,MarkupSafe 和 Werkzeug 也会被
下载到本地。
pip3 install --download=`pwd` flask
[root@mysql1 shell]# pip3 install --download=`pwd` flask
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
DEPRECATION: pip install --download has been deprecated and will be removed in the future. Pip now has a download command that should be used instead.
Collecting flask
Downloading https://files.pythonhosted.org/packages/cd/77/59df23681f4fd19b7cbbb5e92484d46ad587554f5d490f33ef907e456132/Flask-2.0.3-py3-none-any.whl (95kB)
100% |████████████████████████████████| 102kB 111kB/s
Saved ./Flask-2.0.3-py3-none-any.whl
Collecting itsdangerous>=2.0 (from flask)
Downloading https://files.pythonhosted.org/packages/9c/96/26f935afba9cd6140216da5add223a0c465b99d0f112b68a4ca426441019/itsdangerous-2.0.1-py3-none-any.whl
Saved ./itsdangerous-2.0.1-py3-none-any.whl
Collecting Werkzeug>=2.0 (from flask)
Downloading https://files.pythonhosted.org/packages/f4/f3/22afbdb20cc4654b10c98043414a14057cd27fdba9d4ae61cea596000ba2/Werkzeug-2.0.3-py3-none-any.whl (289kB)
100% |████████████████████████████████| 296kB 16kB/s
Saved ./Werkzeug-2.0.3-py3-none-any.whl
Collecting click>=7.1.2 (from flask)
Downloading https://files.pythonhosted.org/packages/4a/a8/0b2ced25639fb20cc1c9784de90a8c25f9504a7f18cd8b5397bd61696d7d/click-8.0.4-py3-none-any.whl (97kB)
100% |████████████████████████████████| 102kB 13kB/s
Saved ./click-8.0.4-py3-none-any.whl
Collecting Jinja2>=3.0 (from flask)
Downloading https://files.pythonhosted.org/packages/20/9a/e5d9ec41927401e41aea8af6d16e78b5e612bca4699d417f646a9610a076/Jinja2-3.0.3-py3-none-any.whl (133kB)
100% |████████████████████████████████| 143kB 15kB/s
Saved ./Jinja2-3.0.3-py3-none-any.whl
Collecting dataclasses; python_version < "3.7" (from Werkzeug>=2.0->flask)
Downloading https://files.pythonhosted.org/packages/fe/ca/75fac5856ab5cfa51bbbcefa250182e50441074fdc3f803f6e76451fab43/dataclasses-0.8-py3-none-any.whl
Saved ./dataclasses-0.8-py3-none-any.whl
Collecting importlib-metadata; python_version < "3.8" (from click>=7.1.2->flask)
Downloading https://files.pythonhosted.org/packages/a0/a1/b153a0a4caf7a7e3f15c2cd56c7702e2cf3d89b1b359d1f1c5e59d68f4ce/importlib_metadata-4.8.3-py3-none-any.whl
Saved ./importlib_metadata-4.8.3-py3-none-any.whl
Collecting MarkupSafe>=2.0 (from Jinja2>=3.0->flask)
Downloading https://files.pythonhosted.org/packages/fc/d6/57f9a97e56447a1e340f8574836d3b636e2c14de304943836bd645fa9c7e/MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
Saved ./MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
Collecting zipp>=0.5 (from importlib-metadata; python_version < "3.8"->click>=7.1.2->flask)
Downloading https://files.pythonhosted.org/packages/bd/df/d4a4974a3e3957fd1c1fa3082366d7fff6e428ddb55f074bf64876f8e8ad/zipp-3.6.0-py3-none-any.whl
Saved ./zipp-3.6.0-py3-none-any.whl
Collecting typing-extensions>=3.6.4; python_version < "3.8" (from importlib-metadata; python_version < "3.8"->click>=7.1.2->flask)
Downloading https://files.pythonhosted.org/packages/45/6b/44f7f8f1e110027cf88956b59f2fad776cca7e1704396d043f89effd3a0e/typing_extensions-4.1.1-py3-none-any.whl
Saved ./typing_extensions-4.1.1-py3-none-any.whl
Successfully downloaded flask itsdangerous Werkzeug click Jinja2 dataclasses importlib-metadata MarkupSafe zipp typing-extensions
[root@mysql1 shell]# ll
total 744
-rw-r--r-- 1 root root 97486 Aug 10 18:48 click-8.0.4-py3-none-any.whl
-rw-r--r-- 1 root root 19041 Aug 10 18:48 dataclasses-0.8-py3-none-any.whl
-rw-r--r-- 1 root root 558 Aug 10 17:52 dfkjsdklfjsdlkjfdksjf
-rw-r--r-- 1 root root 95575 Aug 10 18:47 Flask-2.0.3-py3-none-any.whl
-rw-r--r-- 1 root root 17978 Aug 10 18:48 importlib_metadata-4.8.3-py3-none-any.whl
-rw-r--r-- 1 root root 18326 Aug 10 18:47 itsdangerous-2.0.1-py3-none-any.whl
-rw-r--r-- 1 root root 133630 Aug 10 18:48 Jinja2-3.0.3-py3-none-any.whl
-rw-r--r-- 1 root root 30215 Aug 10 18:49 MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl
-rw-r--r-- 1 root root 26844 Aug 10 18:49 typing_extensions-4.1.1-py3-none-any.whl
-rw-r--r-- 1 root root 289232 Aug 10 18:48 Werkzeug-2.0.3-py3-none-any.whl
-rw-r--r-- 1 root root 5313 Aug 10 18:49 zipp-3.6.0-py3-none-any.whl
4.windows pycharm 开发工具。
pycharm的功能:
代码补全
代码高亮
项目管理
智能提示
代码风格检查
集成单元测试
集成版本控制工具
图形界面调试
方便的重构工具
快捷键支持
大量的插件
5.python shell
python shell的缺点
没有语法高亮
不支持tab自动补全
没有自动缩进功能
不能保存历史记录
不能很好的与操作系统交互
无法导入外部文件中的程序。
IPython,增强版本的 Python shell;
IPython 的功能:
语法高亮
自动缩进
Tab 补全
快速获取帮助信息
搜索历史
执行shell 命令。
6.pdb python 调试器
pdb: 功能:
设置断点
单步调试
查看源码
查看程序堆栈
pdb 类似 GDB 调试命令。常用的语法有:
break ,缩写 b,设置断点。
continue,cont/c ,继续执行下一个断点。
next,n,执行下一行,如果下一行是子程序,不会进入子程序。
step,s:执行下一行,如果下一行是子程序,会进入子程序。
where,bt/w,打印堆栈轨迹。
enable,启用禁用的断点
disable,禁用启用的断点
pp/p,打印变量或表达式。
list,l,根据参数值打印源码。
up,u,移动到上一层堆栈。
down,d,移动到下一层堆栈。
restart,run,重新开始调试。
args,a 打印函数参数。
clear,cl,清除所有断点。
return,r,执行到当前函数结束。
--启用调试器的两种方法。
(1)启用调试器
--写入需要调试的程序的名称。
python -m pdb test_pdb.py
(2)使用 pdb 模块的 set_trace 方法设置断点。
当程序运行到断点时,将会暂停执行并打开pdb调试器。
vi jisuan.py
#/usr/bin/python
from __future__ import print_function
import pdb
def sum_nums(n):
s=0
for i in range(n):
pdb.set_trace()
s += i
print(s)
if __name__ == '__main__':
sum_nums(5)
7.开源的 ipdb
ipdb 是开一个开源的python调试器,和 pdb有相同的接口。
ipdb 具有句法高亮,tab 补全,更友好的堆栈信息等高级功能。
--安装 ipdb
[root@mysql1 shell]# pip3 install ipdb
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Collecting ipdb
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)",)': /simple/ipdb/
Downloading https://files.pythonhosted.org/packages/0c/4c/b075da0092003d9a55cf2ecc1cae9384a1ca4f650d51b00fc59875fe76f6/ipdb-0.13.13-py3-none-any.whl
Requirement already satisfied: ipython<7.17.0,>=7.16.3; python_version == "3.6" in /usr/local/lib/python3.6/site-packages (from ipdb)
Requirement already satisfied: decorator; python_version == "3.6" in /usr/local/lib/python3.6/site-packages (from ipdb)
Collecting tomli; python_version == "3.6" (from ipdb)
Downloading https://files.pythonhosted.org/packages/05/e4/74f9440db36734d7ba83c574c1e7024009ce849208a41f90e94a134dc6d1/tomli-1.2.3-py3-none-any.whl
Requirement already satisfied: jedi<=0.17.2,>=0.10 in /usr/local/lib/python3.6/site-packages (from ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.6/site-packages (from ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: pickleshare in /usr/local/lib/python3.6/site-packages (from ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: pygments in /usr/local/lib64/python3.6/site-packages (from ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: setuptools>=18.5 in /usr/lib/python3.6/site-packages (from ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: pexpect; sys_platform != "win32" in /usr/local/lib/python3.6/site-packages (from ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: backcall in /usr/local/lib/python3.6/site-packages (from ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: traitlets>=4.2 in /usr/local/lib/python3.6/site-packages (from ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: parso<0.8.0,>=0.7.0 in /usr/local/lib/python3.6/site-packages (from jedi<=0.17.2,>=0.10->ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: wcwidth in /usr/local/lib/python3.6/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.6/site-packages (from pexpect; sys_platform != "win32"->ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: ipython-genutils in /usr/local/lib/python3.6/site-packages (from traitlets>=4.2->ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Requirement already satisfied: six in /usr/local/lib/python3.6/site-packages (from traitlets>=4.2->ipython<7.17.0,>=7.16.3; python_version == "3.6"->ipdb)
Installing collected packages: tomli, ipdb
Successfully installed ipdb-0.13.13 tomli-1.2.3
--ipdb python 断点工具的使用。
vi jisuan2.py
#/usr/bin/python
from __future__ import print_function
import pdb
def sum_nums(n):
s=0
for i in range(n):
ipdb.set_trace()
s += i
print(s)
if __name__ == '__main__':
sum_nums(5)
[root@mysql1 shell]# python3 jisuan2.py
> /root/shell/jisuan2.py(8)sum_nums()
7 ipdb.set_trace()
----> 8 s += i
9 print(s)
ipdb> list
3 import ipdb
4 def sum_nums(n):
5 s=0
6 for i in range(n):
7 ipdb.set_trace()
----> 8 s += i
9 print(s)
10 if __name__ == '__main__':
11 sum_nums(5)
ipdb> c
0
> /root/shell/jisuan2.py(7)sum_nums()
6 for i in range(n):
----> 7 ipdb.set_trace()
8 s += i