美文网首页我爱编程
Python 生态[部分翻译]

Python 生态[部分翻译]

作者: _willing | 来源:发表于2016-04-20 23:52 被阅读83次

    Python 生态

    适合于从 PHP,Ruby 其它语言转过来的web开发者,用于了解的Python生态环境

    更多参考 http://ikraftsoft.com/

    读者对象

    不是关于Python编程,让你更深入了解Python本身。不适合不了解Python的读者。最好度过关于Python的书,比如 Lear Python the hard way .

    假设环境使用的是Linux(ubuntu或者Debian) 或类 Linux 环境。作者不熟悉Win和Mac OS X 环境,它不同于跨浏览器开发。

    关于安装Python的教程:

    版本选择问题

    Python 2.x 是当前广泛使用的,3.x版本是明日之星。

    Python 3 和 2 还是有不同的,2.6 和 2.7 是当前较为流行的版本,大部分流行的包/框架/工具/套件/模块还未能 100% 兼容 Python 3.

    所以,保守安全的做法是选择Python 2.x(具体的话就是 2.7.x 了)。

    Python 3 耻辱墙 描述了各种包的兼容情况,如果选择3的话,建议先浏览一番。

    Python 虚拟机的选择

    CPython 是当前安装最多的一个版本,也是其它虚拟机的参考。

    PyPy 是由 Python 写的,Jython 是由Java写的,且运行在 Java VM 平台上, IronPyton 是为 Microsoft .NET CLR 平台写的。

    如果不是必要的话,CPython 是不二之选。

    如果你还不知道怎么选择的话,那么使用 2.7.x 的 CPython 吧。

    Python 的安装

    大部分Linux/Unix平台是预装了Python的。

    这个就不翻了。。。。

    理解包

    对于Python 你需要理解的是Python 是没有包管理工具的,事实上包的概念在Python中是很若的。

    Python 是用模块来管理代码的。一个模块可以是一个单独的文件只包含一个功能,或者是一个目录包涵一个或多个子模块。包和模块的区别很小,每一个模块可以看作是一个包。

    包和模块的不同是什么? 先来理解下Python是如何找到模块的吧。

    在任何编程环境中,一些功能和类 (str, len, Exception, etc.) 是全局(即内建的)的,而其它的需要用 import 语句导入来使用:

    import os
    from os.path import basename,dirname
    

    这些包应该在文件系统的其它地方,这样可以让 import 找到。Python 怎么定位这些文件的呢?其实在安装Python 虚拟机的时候这些位置已经设定好了,这些设定会根据系统的平台不同而不一样。

    这些包位置可以通过 sys.path 来查看:

    import sys
    print sys.path
    

    它会列出Python默认搜索包的目录,从第一个开始搜索,直到找到包为止,这也意味着如果两个目录含有同一个包名的包,Python会优先选择第一个搜索到的包。

    所以,如果你要篡改Python 优先选择的包,可以使用

    sys.path.insert(0,'/path/to/my/packages')
    

    它适用于多种场景,但要记住它也很容易被滥用。所以,不到万不得已,不用它。

    site 模块控制着Python 搜索包的方法。它在 Python 虚拟机初始化的时候就被引用了。更多细节参考它的官方稳当 .

    PYTHONPATH

    PYTHONPATH 是用来设定包的搜索路径的环境变量,可以看作Python 的 PATH 变量。它也可以看作是 由 : 分割的Python模块路径列表(不像 sys.path 的列表),它的设定方式:

    export PYTHONPATH=/path/to/some/directory:/path/to/another/directory:/path/to/yet/another/directory
    

    在一些环境中,你不想覆盖存在的 PYTHONPATH 值,追加或预加即可。

    export PYTHONPATH=$PYTHONPATH:/path/to/some/directory    # Append
    export PYTHONPATH=/path/to/some/directory:$PYTHONPATH    #Prepend
    

    这个命令你只要放入 .bashrc 活着 .zshrc就好。

    PYTHONPATH, sys.path.insert 相似,也很容易修改,但最好不要去改。因为你一旦本地改了,而可能没有去修改上线环境。🈶️其它的方式,本文稍后呈现。

    现在你理解了 Python 怎么样查找已经安装的包,那么我们来回顾下我们的问题。包和模块有什么不同?包是一个模块或者是模块集,通常压缩在一个tar包中,这个tar包中包含有依赖关系;复制文件到标准的包路径指导;编译说明,比如在安装前要编译的代码。

    第三方包

    对于各种任务,你很可能需要安装第方包。

    Linux 系统安装第三方包有三种方法。

    • 使用包管理系统 ,如deb,rpm
    • 各种社区开发工具,如pip,easy_install
    • 从源码安装

    三种方式,都是做同样一件事。安装依赖,编译代码(如果需要的话),复制包中的模块到标准的包搜索目录中。

    对于第二和第三种方式是和操作系统平台无关的,可以到 StackOverflow 网站上搜索相关的基于你的平台的第三方包的安装方法。

    哪里找第三方模块

    安装特定发行版包管理系统

    simplejson(Json 语法分析工具),如在 Ubuntu 上:

    $ sudo apt-get install python-simplejson
    

    安装 pip

    easy_install 在失宠了,所以我们使用 pip 。

    pip 是Python 包管理工具。pip 并没有随着Python虚拟机安装,需要额外安装。

    pip 安装和使用略。。。。。。。。

    源码安装

    这里也略。。。。。。。。。。

    开发环境

    virtualenv

    最流行的设置Python开发环境的方式。virtualenv 为Python设定独立的环境。

    为什么需要设定独立的Python环境?

    开发过程中遇到最多的问题就是依赖和版本的问题,间接的和权限相关。 假设你的应用需要LibFoo第一个版本,但是另外一个应用需要第二个版本。你怎么使用这两个应用?如果都安装在 /usr/lib/python2.7/site-packages(或其它平台对应的目录) 目录中,很容易导致你无意升级了的一个不应该升级的应用。

    简单的说,每个项目由不同/独立的Python环境。为每一个项目安装它需要的包到它独立的环境。

    安装pip

    sudo pip install virtualenv
    

    安装完pip,为项目创建独立的Python环境

    $ mkdir my_project_venv
    $ virtualenv --distribute my_project_venv
    

    。。。。也不写了,参考我以前整理的文章吧。。。。 LINK

    其它重要的工具

    编辑器

    Vim

    IDE like Sublime text

    Pyflakes

    包检查工具

    Requests : HTTP 类库

    Flask: web开发框架

    Django:web开发的全栈框架

    SciPy:科学计算工具

    PEP 8 : Python风格指南

    REF(Original):http://mirnazim.org/writings/python-ecosystem-introduction/

    相关文章

      网友评论

        本文标题:Python 生态[部分翻译]

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