在OS X上设置Python Web开发环境

时间:2008-11-05 18:19:44

标签: python mysql apache macos

我正在运行Mac OS X Leopard并想知道设置Web开发环境的简单方法是在我的机器上使用Python,MySQL,Apache,这样我就可以在Mac上进行开发,然后轻松移动它未来的主持人。

我一直在尝试安装mod_wsgi并配置为使用Django并且现在头疼。是否有任何网络主机目前除谷歌之外还使用mod_wsgi,所以我可以在那里开发?

10 个答案:

答案 0 :(得分:2)

大多数Python应用程序正在远离mod_python。它可能因框架或提供者而异,但大多数开发工作都会进入mod_wsgi。

使用WSGI标准将使您的Python应用程序服务器不可知,并允许其他很好的添加,如WSGI中间件。其他提供商可能只提供CGI(不能很好地扩展性能)或FastCGI

答案 1 :(得分:2)

FWIW,我们发现virtualenv [http://pypi.python.org/pypi/virtualenv]是我们开发设置中非常宝贵的一部分。我们通常在使用不同版本的Python库等的多个项目上工作。如果没有某种方式提供本地化的自定义Python环境,就很难在一台机器上执行此操作,就像virtualenv那样。

答案 2 :(得分:1)

我只使用manager.py脚本中包含的服务器与Django合作,并且在转移到生产环境时没有遇到任何问题。

如果您将应用程序放在为您执行环境配置的主机中(例如WebFaction),那么从开发到生产就不会有问题。

答案 3 :(得分:1)

我在Mac笔记本电脑上运行Linux虚拟机。这使我可以保持我的开发环境和生产环境完全同步(并创建快照以便于实验/回滚)。我发现VMWare Fusion效果最好,但是如果你只是想弄湿你的话,还有免费的开源替代品,如VirtualBox

我在Mac上的来宾Linux操作系统中共享源文件夹,并使用我选择的Mac源编辑器进行编辑(我使用Eclipse / PyDev,因为其他方面非常出色{{3} }还不能很好地处理中文文本)。我已经记录了来宾Linux操作系统TextMate的软件设置;它针对多个here应用程序(包括geodjango)进行了优化。

为了增加额外的乐趣,您可以编辑Mac的/ etc / hosts文件,使yourdomainname.com解析为您的客户Linux机箱内部IP地址,并且有一种简单的方法可以在线或离线工作/测试多个Web项目很麻烦。

答案 4 :(得分:0)

您正在寻找的是Mod_Python。它是Python的基于Apache的解释器。在这里查看:

http://www.modpython.org/

答案 5 :(得分:0)

Google App Engine已经为你完成了。一些限制,但它工作得很好,它为您提供了免费托管的途径。

答案 6 :(得分:0)

当然,Mac OS X在最近的版本中附带了Python和Apache。但是,您可能希望在所使用的版本中具有更大的灵活性,或者您可能不喜欢Apple对其配置方式所做的调整。获得更通用的工具集(包括MySQL)的一个好方法是重新安装它们。这将有助于您的可移植性问题。可以使用其中一个开源软件包提供程序相对轻松地安装框架。

答案 7 :(得分:0)

您可能需要查看web2py。它包括一个通过浏览器开发的管理界面。您只需要一个软件包,包括Python

答案 8 :(得分:0)

查看WebFaction - 虽然我不使用它们(我也不会以任何方式与其业务相关/获利)。我一遍又一遍地阅读他们的服务有多棒,特别是Django - 他们是多么友好。关于使用Django和mod_wsgi启动和运行有一个特定的post in their forums

与我之前的其他人一样,我强烈建议使用Ian Bicking的virtualenv来隔离您的开发环境;对于那种设置,有一个dedicated page in the mod_wsgi documentation

我还建议您查看pip,这基本上是一个更聪明的easy_install,它知道virtualenv。 Pip为virtualenv式开发做了两件非常好的事情:

  • 知道如何从源代码管理(SVNGit等安装...)
  • 了解如何“冻结”现有开发环境的要求,以便您可以在其他地方创建该环境 - 非常适合多个开发人员或部署。

答案 9 :(得分:0)

mod_wsgi非常非常简单。

Pyerweb是一个非常简单的(约90行,包括注释/空格)我写的符合WSGI的路由框架。基本上,WSGI API只是一个传递environwsgi_start_response的函数,它返回一个字符串。

envrion是带有请求信息的dict,例如environ['PATH_INFO']是请求URI)

wsgi_start_response这是一个可调用的函数,您可以执行该函数来设置标题:

wsgi_start_response(output_response, output_headers)

output_response是包含您要发送的HTTP状态的字符串(200 OK等),output_headers是包含您的标头的元组列表(例如,{{} 1}}将设置内容类型)

然后该函数返回一个包含输出的字符串..这就是它的全部内容!

要使用spawning运行它,您只需执行[("Content-type", "text/html")]即可开始侦听端口8080.

要通过mod_wsgi使用它,它的文档很好,http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide并且有一个django specific section

使用mod_wsgi的好处是它是服务Python Web应用程序的标准。我最近决定使用Google App Engine,当Pyerweb(我在这个答案的开头链接到的)完全无意中完全完成时,我感到很惊讶。当我注意到Django应用程序运行时,我印象更深刻。标准化是一件好事!