蛇之魅惑
首发于蛇之魅惑
搭建Python扩展开发环境

搭建Python扩展开发环境

摘要:一些Python库的安装过程中需要一个C语言的编译环境,不仅如此,有的时候我们自己也需要做C和Python的混合编程。本文介绍在主流平台上搭建Python扩展开发环境。====================================================


1. Windows

Windows平台既不自带Python也不会默认安装C语言编译器。

安装Python,应该从官方网站下载并安装。一些电脑管家软件自带的Python安装包版本太低。

官网的下载地址是Download Python,对于Windows平台有x86 MSI Installer和x86_64 MSI Installer,对应32位的操作系统和64位的操作系统。如果不清楚如何选择,下载x86 MSI Installer即可。安装的过程非常简单,点击下一步,每一步均保持默认设置。最后一步安装程序会要求是否将Python添加到PATH变量,这给予你打开命令提示符随时使用Python的能力,最好勾选上。Windows Python自带开发库,但若需要调试你的C语言扩展,需要安装pdb扩展符号库,也在下载页面中获取。


Windows下的主流的C语言的编译器有gcc和MSVC两大阵营可选。由于你在官网下载的Python(2.7.10)是用Visual Studio 2008(即MSVC9)编译的,因此你应该选择Visual Studio 2008作为编译器。免费的Visual Studio 2008 Express Edition就够用了,下载地址为go.microsoft.com/? ,或者使用微软专门为Python开发准备的编译器套件Visual C++ Compiler for Python 2.7,体积非常小巧。

安装好之后,从开始菜单中打开Visual Studio 2008命令提示符,尝试安装Cython:

> easy_install -U cython

如果没有问题,则说明环境搭建成功。

除此之外,如果你安装有Visual Studio 2013或Visual Studio 2015,你可以安装微软官方出品的Python Tools for Visual Studio (PTVS)PTVS Installation · Microsoft/PTVS Wiki · GitHub ,你会得到一个方便的Python IDE,同时也会失去同世界上大部分Python开发者沟通的能力。

2. Mac OS X

Mac OS X自带Python和Python开发库。OSX Yosemite自带的版本为2.7.6。其安装位置为/System/Library/Frameworks/Python.framework/。但OS X会在/usr/bin,/usr/lib以及/usr/include下放置相应的程序、库、头文件等,以符合Filesystem Hierarchy Standard 的标准要求。

若从官网Download Python进行安装,安装位置是/Library/Frameworks/Python.framework/,在安装过程中也不可选。安装程序会创建/usr/local/bin/python并设置环境变量。此时若启动Terminal,会优先使用刚刚安装的Python。

一些OS X下的包裹管理器,例如HomeBrew等也会包含Python。

手动安装的的Python容易和系统自带的Python发生混淆,从而产生包裹安装位置不正确等问题。如果感到有问题了,执行which python可以观察到到底是使用的哪个Python。如果想有一个干净的环境,要使用Virtual Env python-guide/virtualenvs.rst at master · kennethreitz/python-guide · GitHub

由于系统自带的Python是Mac OS X的一部分,无论何时都不要修改系统自带的Python。

Mac OS X不自带C语言的编译器,可以从App Store中安装xcode。xcode的gcc实际上使用的是clang/llvm,和GNU GCC保持一定的兼容。

如果你使用HomeBrew自带的Python,那么可同时使用HomeBrew自带的gcc。

3. Linux/Unix

Linux/Unix没有太统一的标准,不同的发行版、不同发行版的不同版本都有不同。Python本身代码的兼容性不错,大到服务器,小到树莓派甚至OpenWRT,都有Python的影子。

如果你能折腾Linux/Unix,那么安装软件对你来说不会是一个问题。记得Python、Python的开发库、gcc编译器备齐了就可以了。

编辑于 2015-11-09

文章被以下专栏收录