Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Python > 正文

Python开发生态环境简介

时间:2016-06-26 18:48 来源:网络整理 作者:linux系统 阅读:

Python开发生态环境简介

作者: Mir Nazim

原文: Python Ecosystem - An Introduction

译者: dccrazyboy

当开发人员从PHP,Ruby或者别的开发环境转换到Python时,所面对的最大问题是缺乏对Python开发的生态环境的充分理解。开发人员非常想得到一份关于完成大多数任务的指南或资源,而不论使用的方法是否规范。

下文所讲到的基本上都来源于我的网站,那存储着Python环境下对于网络应用开发的一些基本资料,这些资料是为那些从别的平台转到Python开发的实习生,研究生和有经验的开发者准备的。

这不是一个完美的文档,我的目标是将它做成一个永久的文档,但愿这篇文档可以发展成为一个详细的教程。

目标读者

这不是一本关于Python的语法书。 这个教程不会教你花哨的Python用法让你成为一名Python黑客。 我默认你已经了解Python的基础用法。如果你不知道,别往下看了。 先去看看Zed Shaw的免费教Python入门的书《Learn Python The Hard Way》。

我不知道你是不是在用Linux(最好是Ubuntu/Debian)或者是类Linux系统。 为毛?因为Linux是我最了解的系统。 除了测试跨浏览器兼容性以外,我从没在Windows或者Max OS X上面开发过。 下面是如何在不同平台安装Python的教程。

  • Python 101: Setting up Python on Windows
  • Official documentation for Python on Windows
  • Official documentation for Python on Mac OS X
  • 去搜索下最适合你平台的Python安装方法。我强烈建立问Stack Overflow。

    版本之惑

    Python 2.x是一个稳定的版本,Python 3是个新的版本。如果你不在乎,跳过这段直接看下面的Python安装部分。

    当开始学习Python时,安个3.x的版本看上去应该是第一步,但它可能并不一定是你想要的。

    现在Python有两个正在开发的版本-2.7.x和3.x(也被成为Python3,Py3k或Python 3000)。 跟Python2相比Python3就是另外一个语言。它们之间存在者或大或小的语法差异。 现今Python2.6/2.7是被安装和应用的最为广泛的版本。 许多的主流代码和一些重要的packages/frameworks/tools/utilities/modules并不支持Python3。

    因此,最安全的选择是使用2.x(2.7最好)版本。如果你完全了解Python3的话在再用它。

    Python 3 Wall of Shame 列出了很多包在Python3中的兼容性。在决定用Python3之前好好看看这个。

    VM挑选

    Python解释器或Python虚拟机有很多种实现,CPython是最主流的实现。CPython同时也是别的虚拟机实现的参考解释器。

    PyPy是用Python实现的Python解释器,Jython是用Java实现运行在JVM上的解释器,IronPython是用Microsoft .NET CLR实现的解释器。

    除非解释器的选择非常非常重要,我们一般都用CPython。

    如果上面那些关于版本和虚拟机的废话让你头疼,那你就安装CPython的2.7.x版本,相信我!

    安装Python

    大多数的Linux/Unix系统的Max OS X都自带Python。如果没有或者版本过低,你可以通过下面的命令安装:

    Ubuntu/Debian及其衍生系统:

    $ sudo apt-get install python2.7

    sudo是一个是类Unix系统的一个命令,它允许用户以别的用户(一般是超级用户, 【linux系统】 ,或者root)的权限运行程序。 更多请查阅Wikipedia 。

    Fedora/Red Hat及类似系统:

    sudo yum install python2.7

    使用RHEL你可能需要打开EPEL Repositories才能安装。

    从这起,我将在例子中使用sudo,你需要根据你的系统进行更改。

    理解包

    你首先需要理解的是Python没有一个默认的包管理设施。事实上,包的概念在Python中是相当弱的。

    可能你已经知道,Python代码被组织为模块。 一个模块可能由包含一个函数的单一文件组成,也可能由包含多个模块的目录组成。 包和模块的区别非常小,并且每个模块都能被理解为包。

    那么包和模块的区别到底是什么(如果有的话)?为了明白这个,你首先应该明白Python是如何查找模块的。

    如同别的编程环境一样,Python中的一些函数和类(例如str,len,Exception等)在全局(叫做内置函数)都是可用的。 别的就需要通过手动import进来。例如:

    >>> import os >>> from os.path import basename, dirname

    这个包一定存在你的机子上,这样才能被import语句导入。但Python是如何知道这些模块的位置呢? 这些位置信息在你安装Python虚拟机时就被自动设置好了,并且依赖于你的目标平台。

    包的路径可以在sys.path中查询。下面是在我的笔记本上的结果,运行环境是Ubuntu 11.10。

    >>> import sys >>> print sys.path ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/ubuntuone-client', '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-installer', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']

    这里给出了Python搜索包的路径。它将从最上面开始找,直到找到一个名字相符的。 这表明如果两个不同的路径分别包含了两个具有相同名字的包,搜索将在找到第一个名字的时候停止,然后将永远不会往下查找。

    正如你所猜的,包搜索路径很容易被劫持,为了确保Python首先载入你的包,所需做的如下:

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

    尽管这个方法在很多情况下都很好用,但一定要小心不要滥用。 只有当必要时再使用!不要滥用!

    site模块控制包的搜索路径。当Python虚拟机初始化时它会子同被导入。如果你想了解更多信息,请看 官方文档 。

    PYTHONPATH变量

    PYTHONPATH是一个用来增加默认包搜索目录的环境变量。可以认为它是对于Python的一个特殊的PATH变量。 它仅仅是一个通过:分割,包含Python模块目录的列表(并不是类似于sys.path的Python list)。 它可能就类似下面这样:


    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

    PYTHONPATH,sys.path.insert这些方法并非完美,我们最好也不要用这些方法。 使用它们,你可能可以解决本地的开发环境问题,但它在别的环境下也许并不适用。 有很多种方法可以达到这个效果,在下面我将一一阐述。

    我们现在明白的Python如何找到安装的包路径,现在让我们回到开始那个问题。 模块和包的区别到底是什么?包是一个模块或模块/子模块的集合,一般情况下被压缩到一个压缩包中。 其中包含1)依赖信息 2)将文件拷贝到标准的包搜索路径的指令。3)编译指令(如果在安装前代码必须被编译的话)。 就这些东西!



    第三方包

    从一开始,如果要做一些实际Python开发,你一定会用到一些第三方包。

    在Linux系统上至少有3种安装第三方包的方法。

  • 使用系统自带的包管理系统(deb, rpm, 等)
  • 通过社区开发的各种工具,例如pip, 【linux命令大全】 ,easy_install等
  • 从源文件安装
  • 这三个方面,几乎完成同样的事情。即:安装依赖,编译代码(如果需要的话),将一个包含模块的包复制的标准软件包搜索位置。

    第二步和第三步在所有的操作系统上基本相同。 我再次希望您可以在 Stack Overflow 上找到你的平台的第三方包安装方法。

    在哪找第三方包?

    在安装第三方包之前,你首先要找到他们。以下是几种方法:

  • 你的系统包管理器中的发行版专用包。
  • Python Package Index (or PyPI)
  • 大量的源代码服务器,例如 Launchpad, GitHub, BitBucket 等
  • 通过发行版专用包安装

    通过包管理器安装包安装包就像使用命令行或者GUI安装别的软件那样简单。 例如在Ubuntu中安装simplejson

    $ sudo apt-get install python-simplejson

    通过pip安装

    easy_install渐渐不再流行。我们将主要介绍pip,它是easy_install的一个替代品。

    pip是一个用来安装和管理Python包的工具,就如同Python Packet Index一样。 pip并没有随着Python一起安装,因此我们需要先安装它。Linux下,一般这样安装:

    $ sudo apt-get install python-pip

    在安装任何其他包之前,我总是通过PyPI将pip升级到最新版本的, Ubuntu软件库中的版本普遍落后的PyPI。我通过pip升级pip它自己。

    $ sudo pip install pip --upgrade

    现在如果需要安装任何包,你可以运行pip install package-name命令。 所以可以通过下面命令安装simplejson:

    $ sudo pip install simplejson

    删除包也很简单。

    $ sudo pip uninstall simplejson

    感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《Python开发生态环境简介》技术文章,《Python开发生态环境简介》详细使用和说明,有时《Python开发生态环境简介》可能不完善、敬请谅解!如果《Python开发生态环境简介》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    验证码:点击我更换图片