Werkzeug 一般情况及在 Python 3.1 中的使用
我一直在认真研究用Python开发网页应用的各种方法。为了说明,我们使用的是RHEL 64位系统,apache和mod_wsgi。
历史:
- 多年前用PHP + MySQL
- 最近用PHP + Python 2.x + MySQL(现在仍在用)
- 正在尝试用Python + PostgreSQL
我们有一个很棒的库,可以让PHP和Python之间进行沟通(PHP负责界面,Python负责后台)……不过,随着一个大型项目即将开始,完全使用Python可能会带来很大的好处。
我们通常不喜欢有一个庞大的框架来规定事情的做法。我们更喜欢一组有用的助手和工具(无论是PHP还是Python)。
问题1:
在阅读了一些经验丰富的Python用户的回答后,我看到Werkzeug被推荐了很多次。如果有几位直接使用Werkzeug开发专业网页应用的人能分享一下他们为什么使用它、喜欢它的原因,以及需要注意的事项,那就太好了。
问题2:
有没有支持Python 3.1.1的Werkzeug版本?我已经成功在Apache 2.2上安装了mod_wsgi和Python 3.1.1。
如果没有这个版本,升级到支持Python 3.1需要做些什么呢?
注意:我已经对Werkzeug的源代码运行了2to3
,它可以进行Python编译。
编辑:
我们即将开始的项目预计要到明年才会完成。到那时,我猜Python 3.X会变得更加普及。此外,考虑到我们是运行这个应用(而不是分发它),有没有人能评论一下现在解决一些Python 3的问题的可行性,这样等到明年时,我们就能更顺利地过渡?
感谢大家的想法!
3 个回答
我只能回答第一个问题:
我最开始是用它来做一些小的网页项目,但现在我已经用它来重新开发一些较大的应用程序了。为什么选择Werkzeug呢?因为它的模块化设计非常有用。你可以根据需要添加各种模块,让功能更灵活,而且它的请求文件处理也很不错,能够处理超过300MB的文件,而且不会把这些文件全部放在内存里。
缺点嘛……有时候模块化需要你提前考虑一下(比如Django,它一次性给你所有功能,但想要去掉一些功能就比较麻烦),不过对我来说,Werkzeug用起来挺好的。
我没有使用过Werkzeug,所以只能回答第二个问题:
不,Werkzeug不支持Python 3。实际上,到现在为止,能在Python 3上运行的东西非常少。虽然把代码迁移过去并不难,但在所有第三方库都迁移完成之前,你是无法进行迁移的,所以进展很慢。
一个很大的障碍是setuptools,这是一个非常流行的工具。setuptools现在没有人维护了,但有一个被维护的版本叫Distribute。Distribute在一两周前刚刚发布了支持Python 3的版本。我希望现在对Python 3的支持能有所增加。不过,像Werkzeug这样的大项目迁移到Python 3,可能还需要很长时间,至少几个月,甚至可能要一年左右。
目前,mod_wsgi对于Python 3.x也还没有准备好。对于Python 3.x,WSGI的定义还没有一个令人满意的版本;WEB-SIG小组还在不断讨论和解决相关问题。mod_wsgi只是根据一些猜测来进行开发,但未来WSGI的规范和标准库很可能会有变化。你今天用Python 3.1写的任何网页应用,未来都有可能会出问题。
现在的情况有点混乱。对于网页应用来说,实际上你只能使用Python 2.x。