python相关工具

来源:互联网 发布:java项目原代码 编辑:程序博客网 时间:2024/05/15 12:26

1.   目前在 Windows 下除了官方提供的安装版外,还有:

ActivePython ,这个与官方版本的区别在于提供了额外的库和文档,并且自动设置了PATH环境变量(后文会详细提到)

Python(x,y),这个是我一直用并且推荐给别人用的版本。从名字就能看出来这个发行版附带了科学计算方面的很多常用库,另外还有大量常用库比如用于桌面软件界面制作的PyQt, 还有文档处理,exe文件生成等常用库。另外的还有大量的工具如IDE,制图制表工具,加强的互动shell之类。很多下文提到的软件在此发行版中都有附带。其他方面,Python(x, y)还附带了手工整理出的所有库的离线文档,每个小版本升级都提供单独的补丁。总的来说是很用心维护的一个发行版,十分建议安装这个版本

2.   pip 管理第三方库

Python 的一大优势就是有极为大量的第三方库,包括各个方面的引用。然而安装第三方库对没有掌握方法的同学来说会变得很让人烦恼。事实上 Python 第三方库的安装和管理有着一个一个唯一正确的做法,这个做法要求你什么其他的都不用干,只要输入你要安装库的名字就可以了。

setuptools 也包在 Python(x, y) 当中。如果没有的话,要首先先安装 setuptools(python3后更名为distribute) ,这个其实就是一个安装第三方库的软件。选择对应版本的 Windows Installer 进行下载和安装后,打开一个命令行窗口,输入:

easy_install pip

如果提示找不到程序,那么说明你当前没有设定好环境变量。安装官方提供的 Python 安装包的话肯定会有这个问题,而且很可能暂时不会修正,这就是牛逼程序员的倔强。具体做法是 右键我的电脑 – 属性 – 高级系统设置 – 环境变量 – 将 C:\python2*\Scripts 加入到 PATH 那一组当中。这样做的效果就是在任何地方的命令行下输入命令,那么系统会额外查找我们设定的那个目录中的内容。之后再执行上面的命令,装好了以后我们就要弃用 setuptools,转投 pip。要安装任何一个库,你只要找到他的名字(不需要版本号),用 pip 安装即可。譬如安装 django,那么输入如下命令即可:

pip install django

其实之前 easy_installpip 效用是类似的,都是在官方的第三方库索引 PyPI 查询信息并进行下载和安装。pip 的优势在于支持更高级的功能,譬如虚拟环境,安装失败不会残留破损的库,更重要的是 pip 还可以进行卸载。输入下面命令就能卸载一个之前由 pip 进行安装的库。继续上面的例子,现在要卸载 django:

pip uninstall django

这是 setuptools 所缺失的功能。需要额外说明的是大部分纯 Python 的库都能用这个方法在 Windows 下装上,但是需要编译 C 语言模块的一般都不太可能成功。遇到这种情况,在相应的库德站点上找找有没有对应的 Windows 安装包。

3. 用 virtualenv 构建虚拟 Python 环境

如果你使用过 Python 做过 Web 开发,或者你有需求在本机上安装多个版本的 Python 来测试你的代码能否跑再 2.5, 2.6, 2.7 各个版本上,或者你的不同项目依赖于一个第三方库的不同版本;再或者,有时候你就是想要一个没有之前安装过的乱七八糟的库,一个干净的 Python 环境。这种时候 virtualenv 就能帮上你的忙。它能利用安装好的 Python ,在同一台机器上建立一个或多个互不相干的虚拟 Python 环境,且能随时切换。如果你看到这里还不觉得这个有什么用处,那不妨看下去留下点印象,等哪天你有这类需求的时候能找到这个简单实用的工具。

和其他第三方库一样,我们可以通过 pip 轻松安装:

pip install virtualenv

安装完成后你可以开启一个命令行窗口,输入 virtualenv 看看能不能找到这个脚本。如果有问题的话,请按照上面介绍过的步骤检查下是否设置好了 PATH。之后我们可以在一个方便的地方建立一个虚拟环境。建立 C:\envs\ 文件夹,命令行下 cd 到该文件夹中,输入:

virtualenv --no-site-packages --python=C:\Python26\python.exe envtest

之后应该会看到一个叫 envtest 的文件夹。这就是一个新建立的虚拟环境(virtual enviroment)。我们不妨先激活它来看看应该怎么用。命令行下执行 envtest\Scripts\activate.bat,这时是你会发现命令行变成这个样子:

(envtest) c:\>

提示符前面的 (envtest) 就是该环境已被激活的标志。这样你就可以在这个虚拟环境下进行工作了。执行 pip freeze ,你会发现… 你会发现什么都没有啊。执行 pip help,你可以看到 pip freeze 是输出当前 Python 环境下已经安装的所有第三方库。因为我们创建此环境时开启了选项 --no-site-packages,意思就是在创建此虚拟环境中不从系统 Python 中把已经安装了的库也安装到这里来,所以这里是一个干净的新 Python 环境。你可以在这里调用 pip 或者 easy_install 来安装各种你需要的库到这个环境中来,而不会影响到你系统中 Python 的情况,所以说它是一个虚拟的 Python 环境。

我们再回头看下 envtest 目录的结构,其下面的 Scripts 目录中有 python.exe pip.exe 这些程序,在虚拟环境已激活的情况下,你调用 python 或者 pip 都是调用的此目录中的程序。此时系统中的 python.exe 被 virtualenv 通过设置环境变量隐藏了起来。而 Lib 目录下就是存放各种新安装的库。

到这里你应该已经对 virtualenv 基本操作已经了解了,下面讲些使用上的注意事项:

  • 调用 activate.bat 开启虚拟环境,你也可以用同目录下的 deactivate.bat 来退出该虚拟环境。
  • 建立虚拟环境时的参数 --python=C:\Python26\python.exe 是用来指定你想使用 Python 程序位置,所以你可以建立多个虚拟环境来指向多个 Python 版本。另外你要注意的是如果你在系统上安装了多个版本的 Python, 你最先安装的一个版本会被当做主要版本,你在命令行下打 python 时,调用的就是最先安装的一个版本。其实这个是按照 PATH 中设定的路径位置来确定的,你最好把你需要主要使用的版本相关路径放在 PATH 环境变量中最前面。比如我的机器上,就是把 C:\Python26C:\Python26\Scripts 作为 PATH 最前面两个。这样应该就能让保证你主要版本的正常使用。
  • 当你在一个虚拟环境下工作时,假如你想在当前环境下来执行一个 Python 程序,这时你在命令行下必须执行 python foo.py ,这样 foo.py 才会在你当前已经激活的 virtualenv 下执行。作为比较如果你直接执行 foo.py 那么它仍然时在系统环境下执行的

另外,Linux 下可以使用 virtualenvwrapper 来进行方便的管理和切换各个环境,可惜的是这东西在 Windows 下用不了。但幸好有一个简单的脚本 envdotpy 来帮助你使用。把 env.py 放到 PATH 上的目录内,譬如 C:\Python26\Scripts 下。之后先打开里面的 DEFAULT_DIR_PATH 变量,把它改成你集中存放 virtualenv 的地方,在我们上面的例子中就可以把这行改为:

DEFAULT_DIR_PATH = "C:\\envs\\"

之后你就不需要专门 cd 到这个目录,而可以在任意路径上通过 env.py 来进行激活,切换,退出 virtualenv 了。例如执行: env.py envtest 就能激活 envtest 。执行 env.py -q 就能退出任意一个 virtualenv。

4. 避免,和解决编码产生的问题

虽说确定 String 的编码格式是程序员的责任,但有时候你真的不知道有些字串符到底是什么编码的。这里有一个神奇 chardet 能够帮助你。以下是摘自其页面上的例子,很好了说明了它的作用:读入任意一串字符,猜测其编码格式,并且给出猜测的确信度。

>>> import urllib>>> urlread = lambda url: urllib.urlopen(url).read()>>> import chardet>>> chardet.detect(urlread("http://google.cn/")){'encoding': 'GB2312', 'confidence': 0.99}>>> chardet.detect(urlread("http://yahoo.co.jp/")){'encoding': 'EUC-JP', 'confidence': 0.99}>>> chardet.detect(urlread("http://amazon.co.jp/")){'encoding': 'SHIFT_JIS', 'confidence': 1}>>> chardet.detect(urlread("http://pravda.ru/")){'encoding': 'windows-1251', 'confidence': 0.9355}

如果 confidence 非常低的话或者 chardet 直接报错,多半是字串经过多次错误编码解码,要从别的地方找办法解决问题。

5. Vim Python开发 相关资源

事实上我现在自己是在用 Vim 写 Python,感觉也蛮不错。以下是相关资源。

  1. UltimateVimPythonSetup 比较新的一个专门针对 Python 的 Vim 配置文件。
  2. Vim as Python IDE 只要搜 Python 和 Vim 就一定会找到这一篇文章。
  3. vimcolorschemetest 所有的Vim 配色方案都在集结在这里。
  4. Python 相关 Vim 插件
    pythoncomplete.vim 按上面的介绍配置一下,在自动输入的时候按Ctrl-X, Ctrl-O就有很强力的自动补全了。
    python.vim 加强语法的高亮。
    pyflakes.vim 很棒的语法检查,分析你的语法看避免低级错误。注意这个在Vim7.2下才有用, 如果是7.1则一点效果都没有…
原创粉丝点击