美文网首页
python开发环境

python开发环境

作者: 绩重KF | 来源:发表于2017-12-04 16:28 被阅读0次

    1.virtualEnv

    virtualenv is a tool to create isolated Python environments.

    virtualenv通过创建独立Python开发环境的工具, 来解决依赖、版本以及间接权限

    问题. 比如一个项目依赖Django1.3 而当前全局开发环境为Django1.7, 版本跨度过大, 导致不兼容使项目无法正在运行, 使用virtualenv可以解决这些问题.

    virtualenv创建一个拥有自己安装目录的环境, 这个环境不与其他虚拟环境共享库, 能够方便的管理python版本和管理python库.

    1. 安装Virtualenv
      使用pip安装Virtualenv, 使用过python的都应该知道pip包管理神器吧, 即使不知道, 网站也有大把的教程, 不过推荐查看官方安装指南
        $ pip install virtualenv
        //或者由于权限问题使用sudo临时提升权限
        $ sudo pip install virtualenv
    
    1. virtualenv基本使用
      现在开始使用virtualenv管理python环境
        -> ts$ virtualenv ENV  #创建一个名为ENV的目录, 并且安装了ENV/bin/python, 创建了lib,include,bin目录,安装了pip
        New python executable in 
        Installing setuptools, pip...done.
        -> ts$ cd ENV
        -> ts$ ll
        drwxr-xr-x  14  ts  ts  476 12  8 08:49 bin
        drwxr-xr-x   3  ts  ts  102 12  8 08:49 include
        drwxr-xr-x   3  ts  ts  102 12  8 08:49 lib
    
    ·  lib,所有安装的python库都会放在这个目录中的lib/pythonx.x/site-packages/下
    ·  bin,bin/python是在当前环境是使用的python解释器
    

    如果在命令行中运行virtualenv --system-site-packages ENV, 会继承/usr/lib/python2.7/site-packages下的所有库, 最新版本virtualenv把把访问全局site-packages作为默认行为
    default behavior.

    2.1. 激活virtualenv

        #激活虚拟环境
        -> ts$source ./bin/activate  
    
        #使用pip查看当前库
        -> ts$pip list
        pip (1.5.6)
        setuptools (3.6)
        wsgiref (0.1.2)
        -> ts$pip freeze  #显示所有依赖
        -> ts$pip freeze > requirement.txt  #生成requirement.txt文件
        -> ts$pip install -r requirement.txt  #根据requirement.txt生成相同的环境
    

    2.2. 关闭virtualenv

        -> ts$deactivate
    

    2.3. 指定python版本
    可以使用-p PYTHON_EXE选项在创建虚拟环境的时候指定python版本

    -> ts$virtualenv -p /usr/bin/python2.7 ENV2.7
    Running virtualenv with interpreter /usr/bin/python2.7
    New python executable in ENV2.7/bin/python
    Installing setuptools, pip...done.
    
    -> ts$virtualenv -p /usr/bin/python3.4 ENV3.4
    Running virtualenv with interpreter /usr/local/bin/python3.4
    Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4'
    New python executable in ENV3.4/bin/python3.4
    Also creating executable in ENV3.4/bin/python
    Installing setuptools, pip...done.
    

    到此已经可以解决python版本冲突问题和python库不同版本的问题

    1. 其他
      3.1. 生成可打包环境
      某些特殊需求下,可能没有网络, 我们期望直接打包一个ENV, 可以解压后直接使用, 这时候可以使用virtualenv -relocatable指令将ENV修改为可更改位置的ENV

    #对当前已经创建的虚拟环境更改为可迁移

    ->ts$virtualenv --relocatable ./
    Making script ./bin/easy_install relative
    Making script ./bin/easy_install-3.4 relative
    Making script ./bin/pip relative
    Making script ./bin/pip3 relative
    Making script ./bin/pip3.4 relative
    

    当前的ENV都被修改为相对路径, 可以打包当前目录, 上传到其他位置使用

    参考链接:
    virtualenv官方文档:http://virtualenv.readthedocs.org/en/latest

    2. 命令行下调试python代码

    ipdb 命令行调试

    1.安装

      pip install ipdb
    

    2.使用

    1. 直接用命令:python -m ipdb xxx.py  
    
    2. 程序代码内部加入以下代码:
    from ipdb import set_trace
    set_trace()
    或者: 
     __import__("ipdb").set_trace()
    然后 python xxx.py 这样就会拉起ipdb的调试程序
    

    例如:
    example 代码

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    def main():
        """TODO: Docstring for main.
        :returns: TODO
    
        """
        print "Hello World!"
        #设置断点
        __import__('ipdb').set_trace()
        print "example ipdb use!"
    
    if __name__ == "__main__":
        main()
    

    然后:
    python test.py就会看到以下内容:

    image.png

    3.常用命令

        ENTER(重复上次命令)
        c(继续)
        l(查找当前位于哪里)
        s(进入子程序)
        r(运行直到子程序结束)
        !<python 命令>
        h(帮助)
        a(rgs) 打印当前函数的参数
        j(ump) 让程序跳转到指定的行数
        l(ist) 可以列出当前将要运行的代码块
        n(ext) 让程序运行下一行,如果当前语句有一个函数调用,用 n 是不会进入被调用的函数体中的
        p(rint) 最有用的命令之一,打印某个变量
        q(uit) 退出调试
        r(eturn) 继续执行,直到函数体返回
        s(tep) 跟 n 相似,但是如果当前有一个函数调用,那么 s 会进入被调用的函数体中
    

    3. pudb 界面式调试(结合vim界面显示代码)

    1.安装

        pip install pudb
    

    2.使用pudb

       1.   pudb test.py ......
        或者代码:
        2. 在某一行想打断点的地方
        __import__("pudb").set_trace()
      然后 python xxx.py 这样就会拉起pudb的调试程序
    

    像这样:

    image.png

    3.常用命令

    Welcome to PuDB, the Python Urwid debugger.                                           
    -------------------------------------------                                           
                                                                                          
    (This help screen is scrollable. Hit Page Down to see more.)                          
                                                                                          
    Keys:                                                          # 快捷键相关
        Ctrl-p - edit preferences                                  # 编辑配置
                                                                                          
        n - step over ("next")                                     # 运行到下一行                       
        s - step into                                              # 运行进函数
        c - continue                                               # 继续运行
        r/f - finish current function                              # 结束当前函数
        t - run to cursor                                          # 运行到光标处
        e - show traceback [post-mortem or in exception state]     # 显示traceback
    
        H - move to current line (bottom of stack)                 # 移动到当前行(栈底)
        u - move up one stack frame                                # 移动到栈的上一行
        d - move down one stack frame                              # 移动到栈的下一行
                                                                   
        o - show console/output screen                             # 显示命令行屏幕(回车返回pudb)
    
        b - toggle breakpoint                                      # 打断点/取消断点
        m - open module                                            # 打开python模块
    
        j/k - up/down                                              # 上/下
        Ctrl-u/d - page up/down                                    # 上一页/下一页
        h/l - scroll left/right                                    # 左滚动/右滚动
        g/G - start/end                                            # 跳转到首行/末行
        L - show (file/line) location / go to line                 # 跳到指定行
        / - search                                                 # 查找
        ,/. - search next/previous                                 # 查找下一个/上一个
    
        V - focus variables                                        # 聚焦在变量窗口
        S - focus stack                                            # 聚焦在栈窗口
        B - focus breakpoint list                                  # 聚焦在断点列表窗口
        C - focus code                                             # 聚焦在代码窗口
                          
        f1/?/H - show this help screen                             # 显示帮助窗口
        q - quit                                                   # 退出
    
        Ctrl-c - when in continue mode, break back to PuDB         # 当处于连续模式时,返回pudb
    
        Ctrl-l - redraw screen                                     # 重绘窗口
                                                                                          
    Command line-related:                                          # 命令行相关
        ! - invoke configured python command line in current environment            # 进入命令行窗口
        Ctrl-x - toggle inline command line focus                                   # 切换命令行窗口和代码窗口
    
        +/- - grow/shrink inline command line (active in command line history)      # 增长/缩减命令行(命令行历史下激活)
        _/= - minimize/maximize inline command line (active in command line history)# 最小化/最大化命令行(命令行历史下激活)
                                                                                          
        Ctrl-v - insert newline                                    # 插入新行
        Ctrl-n/p - browse command line history                     # 浏览命令行历史
        Tab - yes, there is (simple) tab completion                # 快速补齐
    
    Sidebar-related (active in sidebar):                           # 工具栏相关(工具栏激活时有效)
        +/- - grow/shrink sidebar                                  # 扩大/缩减工具栏(指的是工具栏宽度)
        _/= - minimize/maximize sidebar                            # 最小化/最大化工具栏
        [/] - grow/shrink relative size of active sidebar box      # 扩大/缩减激活工具栏相对大小(指的是窗口高度)
                      
    Keys in variables list:                                        # 变量列表窗口的快捷键
        \ - expand/collapse                                        # 展开/收缩
        t/r/s/c - show type/repr/str/custom for this variable      # 切换type/repr/str/custom
        h - toggle highlighting                                    # 切换高亮
        @ - toggle repetition at top                               # 切换顶部重复
        * - cycle attribute visibility: public/_private/__dunder__ # 属性的循环可视化
        m - toggle method visibility                               # 切换方法的可见性
        w - toggle line wrapping                                   # 切换换行
        n/insert - add new watch expression                        # 添加新的watch表达式
        enter - edit options (also to delete)                      # 编辑选项
    
    Keys in stack list:                                            # 栈列表窗口的快捷键
    
        enter - jump to frame                                      # 跳到某帧
    
    Keys in breakpoints view:                                      # 断点列表窗口的快捷键
    
        enter - edit breakpoint                                    # 编辑断点
        d - delete breakpoint                                      # 删除断点
        e - enable/disable breakpoint                              # 启用/禁用断点
    

    相关文章

      网友评论

          本文标题:python开发环境

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