Python有大量的库可供使用,这将会对我们的开发有着很大的帮助,但是分发或部署应用时依赖问题的解决是个大麻烦。
Python的很多库都有C写的Extension,当你使用pip安装库的时候,pip会对这些扩展进行编译。那么问题来了。
在Linux系统下,这些扩展的编译通常有几个依赖python-dev
, libxxx
, libxxx-dev
, python-xxx
。同时通过系统的包管理安装的python库(也就是python-xxx
)通常版本较旧,满足不了依赖),更新这些东西到需要的版本可不是一件容易的事,virtualenv也只能解决Python库的问题,至于系统中的其他库引发的版本冲突,解决起来就麻烦了。
在Windows下安装Python库则是一个噩梦,想要编译那些C扩展真是让人痛不欲生。你可以读读我之前写的解决在Windows下安装Fabric遇到的错误的博文。幸好一些常用的库已经有人编译好了,你可以在这些地方找到。
Go语言在这个问题上表现的不错,把一个可执行文件丢到服务器上去后就可以跑一个网站,这是多么美好啊。