美文网首页
第2章 Python生态工具

第2章 Python生态工具

作者: super_pcm | 来源:发表于2021-03-15 18:28 被阅读0次

    2.1 python内置小工具

    2.1.1 快速启动一个下载服务器

    • python2
    python -m SimpleHTTPServer
    
    • python3
    python -m http.server
    

    2.1.2 字符串转为json

    利用json.tool模块,能够格式化json字符串,如:

    echo '{"job": "dev", "name": "pcm", "sex": "male"}' |python -m json.tool
    

    2.1.3 检查第三方库是否正确安装

    确认第三方库是否正常安装,不可能每次都进入到python命令行中使用import语句导入观察结果来判断,可以使用下面的方式进行判断:

    python -c "import paramiko"
    

    2.2 pip的高级用法

    2.2.2 pip常用命令

    pip的子命令

    子命令 解析说明
    install 安装软件包
    download 下载安装包
    uninstall 卸载安装包
    freeze 按照requirements格式输出安装包,而已到其他服务器上执行pip instal -r requirements.txt直接安装软件
    list 列出当前系统中的安装包
    show 查看安装包的信息,包括版本、依赖、许可证等
    check 检查安装包的依赖是否完整
    search 查找安装包
    wheel 打包软件到whell格式
    hash 计算安装包的hash值
    completion 生成命令补全配置
    help 帮助信息

    2.2.3 加速pip安装的技巧

    1. 使用豆瓣或者阿里云的源加速软件安装

    可以直接指定镜像地址

    pip install -i https://pypi.douban.com/simple/ flask
    

    也可以把镜像源写入配置文件中,在linux系统中创建 ~/.pip/pip.conf文件,内容如下(清华源):

    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    
    1. 将软件下载到本地部署

    下载到本地

    pip install --download=`pwd` -r requirements.txt
    

    本地安装

    pip install --no-index -f file://`pwd` -r requirements.txt
    

    2.3 Python编辑器

    Linux下推荐使用vim编辑器,但是需要做比较多的修改才能方便地用来编写python程序。windows下推荐使用PyCharm编辑器,有语法高亮等高级功能。

    2.4 Python编程辅助工具

    2.4.1 Python交互式编程

    最简单的python的交互式编程的方法就是使用标准的python shell,在命令行中直接输入python即可。
    虽然很方便,但是标准的python shell没有语法高亮,不支持tab自动补全,也没有自动缩进的功能。
    所以我们更加推荐使用IPython来进行交互式的编程学习,IPython是增强型的Python shell,除了解决上面说的问题外,还可以方便地进行交互式编程和数据分析。

    2.4.2 使用IPython交互式编程

    Linux下可以使用yum或者apt命令直接安装

    yum install ipython
    

    具体使用方法略过,忘记的可以上网查找教程。

    2.4.3 jupyter的使用

    jupyter就是以前的IPython Notebook,是一种新兴的交互式数据分析与记录工具,它可以通过浏览器访问本地或者远程的IPython进程,并利用浏览器的图形界面,增强IPython的可视化输出。
    安装方法如下:

    pip install jupyter
    

    启动方法如下:

    jupyter notebook --no-browser --ip=0.0.0.0
    

    具体使用方法略过,可以上网找对应的教程。

    2.5 Python调试器

    在编写较大的程序的时候,调试器的使用是必不可少的。这里我们介绍两种调试器,分别是Python标准库自带的pdb和开源的ipdb。

    2.5.1 标准库pdb

    pdb的部分调试命令

    命令 缩写 说明 命令 缩写 说明
    break b 设置断点 list I 根据参数打印源码
    continue cont/c 继续执行至下一个断点 up u 移动到上一层堆栈
    next n 执行下一行,如果下一行是子程序,不会进入子程序 down d 移动到下一层堆栈
    step s 执行下一行,如果下一行是子程序,会进入子程序 restart run 重新开始调试
    where bt/w 打印堆栈轨迹 args a 打印函数参数
    enable - 启用禁用的断点 clear cl 清除所有的断点
    disable - 禁用启用的断点 return r 执行到当前函数结束
    pp/p - 打印变量或表达式

    有两种方法启动Python调试器,一种是在命令行参数中指定使用,如下所示:

    python -m pdb test_db.py
    

    另外一种实在python代码中调试pdb模块的set_strace方法设置一个断点。当程序运行至断点时,将会暂停执行并打开调试器。

    #!/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)
    

    这两种方法没什么本质的区别,通常是较小的程序我们可以直接通过命令行去启动调试,这样从程序的第一行开始进行调试;如果程序较大,我们会在需要调试的地方设置 set_trace 方法设置断点,这样只有在执行到设置断点的地方才开始启动调试器。

    2.52 开源的ipdb

    ipdb之于pdb,就相当于IPython之于python。虽然实现同样的功能,但是在易用性方面做了很多改进。

    由于ipdb是一个第三方库,我们需要先安装才能使用。

    pip install ipdb
    

    前面的例子用ipdb进行改造的话,就会变成这样:

    #!/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)
    

    除了使用pdb和ipdb之外,我们还可以使用PyCharm的图形化界面进行调试。

    2.6 Python代码规范检查

    2.6.1 PEP8 编码规范介绍

    PEP8是事实上的代码风格标准,由于内容比较多就举个简单的例子进行介绍。
    在Python中,包的导入在使用import时应该一次只导入一个模块,不同的模块应该独立一行,例如

    #正确的示例
    import os
    import sys
    
    #反面的示例
    import os, sys
    

    并且在导入模块的顺序也是有要求的,先是导入标准模块,其次导入第三方模块,最后导入当前应用程序,各个分组之间以空行分割。

    import time
    import json
    
    import yaml
    import psutil
    
    from mango_agent.cation.common import kill_mongod,start_mogo_node
    

    2.6.2 使用pycodestyle检查代码规范

    遵循相同标准的代码风格非常重要,为了帮助大家形成统一的代码风格,Python官方提供了同名的命令行工具,该工具能够检查Python代码是否违反PEP8规范,并对违反的位置做出相应的提示.

    pip install pep8
    

    为了避免检查工具和代码风格名称一样带来的困惑,这个工具已经重命名为pycodestyle,安装方法同上。

    pip install pycodestyle
    

    使用方法

    pycodestyle --first test.py
    

    2.6.3 使用autopep8将代码格式化

    autopep8是一个开源的命令行工具,它能够将Python代码自动格式化为PEP8风格。autopep8使用pycodestyle工具来决定代码中哪部分需要被格式化。安装和使用非常简单。

    #安装
    pip install autopep8
    
    #使用--in-place直接修改文件,否则不会修改文件,会把结果输出到命令行
    autopep8 --in-place test.py
    

    2.7 Python工作环境管理

    因为Python2和Python3之间存在着较大的差异,然后在很多场景下我们都需要同时用到Python2和Python3.所以,对Python的版本进行管理就很有必要了。
    在这一节里,我们将会介绍两个工具,即pyenv和virtualenv。前者用于管理不同的Python版本,后者用下管理不同的工作环境。有了这两个工具,Python相关版本问题将不再是问题。

    2.7.1 使用pyenv管理不同的Python版本

    pyenv是一个python版本管理工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。使用pyenv后,可以在服务器上安装多个不同的Python版本,也可以安装不同的Python实现。不同的Python版本之间的切换也非常简单。

    1. pyenv的安装

    2. pyenv的使用
      我们通过pyenv的instal命令,可以查看pyenv当前支持哪些Python版本,如下:

    pyenv install --list
    

    使用pyenv安装不同版本的Python版本:

    pyenv install -v 3.6.0
    pyenv install -v 2.7.13
    

    查看当前系统中包含的Python版本:

    pyenv versions
    

    通过pyenv选择不用版本的Python版本,如下

    pyenv global 3.6.0
    

    切换Python版本以后,与版本相关的依赖也会一起切换。因此,我们不用担心不同的版本在系统是否会相互干扰。

    如果要删除某个Python版本,使用uninstall命令即可。

    pyenv uninstall 2.7.10
    

    2.7.2 使用virtualenv管理不同的项目

    virtualenv本身是一个独立的项目,用以隔离不同项目的工作环境。例如,用户pcm希望在项目A中使用flask0.8这个版本,与此同时,又想在项目B中使用Flask0.9这个版本。如果我们全局安装flask,必然无法满足用户的需求。这个使用我们就可以使用virtualenv。
    读者需要注意pyenv和virtualenv的区别。pyenv用以管理不同的Python版本,例如,你的系统工作时使用Python2,学习的时候使用Python3.virtualenv用以隔离项目的工作环境,如同上面的举例。我们只要组合pyenv和virtualenv这两个工具,就能够构造Python和第三方库的任意版本组合,拥有很好的灵活性,也避免了项目之间的相互干扰。
    virtualenv本身是一个独立的工具,用户 可以不使用pyenv而单独使用virtualenv。但是,如果你使用了pyenv,就需要安装pyenv-virtualenv插件,而不是通过virtualenv软件使用virtualenv的功能。

    1. pyenv-virtualenv的安装
      略过
    2. pyenv-virtualenv的使用
    #创建项目A的工作环境
    pyenv virtualenv 2.7.13 first_project
    
    #创建项目B的工作环境
    pyenv virtualenv 2.7.13 second_project
    
    #激活项目A的工作环境
    pyenv activete first_project
    #关闭项目A的工作环境
    pyenv deactivate
    

    如果要删除虚拟环境,则使用

    pyevn virtualenv-delete first_project
    

    相关文章

      网友评论

          本文标题:第2章 Python生态工具

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