Python 生态[部分翻译]

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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,635评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,543评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,083评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,640评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,640评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,262评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,833评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,736评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,280评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,369评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,503评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,870评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,340评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,460评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,909评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,512评论 2 359

推荐阅读更多精彩内容

  • 译者按:原文写于2011年末,虽然文中关于Python 3的一些说法可以说已经不成立了,但是作为一篇面向从其他语言...
    EarlGrey阅读 69,672评论 7 124
  • GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广。awesome-p...
    若与阅读 18,662评论 4 418
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,502评论 6 427
  • (这是很早之前写的但内容没有太过时,发到这边补全一下...)面向初学者介绍Python相关的一些工具,以及可能遇到...
    jagttt阅读 67,295评论 3 44
  • 我是一个杂食性的摄影师 自己称自己为摄影师有些大言不惭 或许称之为爱好会更好一些 我拍摄的对象多为朋友 或者朋友的...
    Jeszny阅读 281评论 0 0