【问题标题】:Setting up a Python web development environment on OS X在 OS X 上设置 Python Web 开发环境
【发布时间】:2010-09-20 22:26:29
【问题描述】:

我正在运行Mac OS X Leopard 并想知道在我的机器上设置 Web 开发环境以使用 Python、MySQL、Apache 的简单方法是什么,这将允许我在我的 Mac 上进行开发,然后轻松地将其移动到未来的主机。

我一直在尝试安装 mod_wsgi 并将其配置为与 Django 一起使用,但现在很头疼。除了谷歌,还有没有其他使用 mod_wsgi 的网络主机,所以我可以在那里开发?

【问题讨论】:

  • 郑重声明,Google 与 mod_wsgi 没有任何关系。 mod_wsgi 项目代码恰好托管在 Google 代码网站上,但这是与 Google 的唯一关系,否则它们与它无关,也不知道使用它。

标签: python mysql apache macos


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 同意,使用 WSGI 构建它,你可以愉快地在目前提到的所有接口上运行它,mod_wsgi、mod_python、CGI,甚至有限制的 GAE。
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      我在我的 Mac 笔记本电脑上运行 Linux 虚拟机。这使我能够使我的开发环境和生产环境完美同步(并制作快照以便于实验/回滚)。我发现 VMWare Fusion 效果最好,但如果您只是想弄湿自己的脚,还有免费的开源替代品,例如 VirtualBox。

      我在我的 Mac 上共享来自来宾 Linux 操作系统的源文件夹,并使用我选择的 Mac 源代码编辑器对其进行编辑(我使用 Eclipse / PyDev,因为其他出色的 TextMate 处理不好尚有中文文本)。我已经记录了客户 Linux 操作系统here 的软件设置;它针对服务多个Django 应用程序(包括geodjango)进行了优化。

      为了获得更多乐趣,您可以编辑 Mac 的 /etc/hosts 文件,使 yourdomainname.com 解析为您的来宾 Linux 机器的内部 IP 地址,并以简单的方式在线或离线处理/测试多个 Web 项目,而无需太多很麻烦。

      【讨论】:

        【解决方案5】:

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

        http://www.modpython.org/

        【讨论】:

        • 更像 mod_wscgi。 mod_python 通常被认为对于 Web 开发来说太低级了。
        【解决方案6】:

        Google App Engine 已为您完成。有一些限制,但效果很好,它为您提供了免费托管的途径。

        【讨论】:

          【解决方案7】:

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

          【讨论】:

          • 我之前研究过 MAMP,有什么方法可以让 mod_wsgi 使用它吗?
          【解决方案8】:

          mod_wsgi 非常非常简单。

          Pyerweb 是我编写的一个非常简单(约 90 行,包括 cmets/whitespace)的符合 WSGI 的路由框架。基本上,WSGI API 只是一个函数,通过environ 和wsgi_start_response,它返回一个字符串。

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

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

          wsgi_start_response(output_response, output_headers)
          

          output_response 是包含您希望发送的 HTTP 状态的字符串(200 OK 等),output_headers 是包含您的标头的元组列表(例如,[("Content-type", "text/html")] 将设置内容-类型)

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

          要运行它,使用spawning,你可以直接使用spawn scriptname.my_wsgi_function_nae,它会开始监听8080端口。

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

          使用 mod_wsgi 的好处是它是为 Python Web 应用程序提供服务的标准。我最近决定使用 Google App Engine,当 Pyerweb(我在此答案开头链接到)完全无意识地完美地工作时,我感到很惊讶。当我注意到 Django 应用程序也在其上运行时,我印象更深刻。标准化是一件好事!

          【讨论】:

            【解决方案9】:

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

            【讨论】:

              【解决方案10】:

              查看WebFaction——尽管我不使用它们(我也没有以任何方式与他们的业务相关/从他们的业务中获利)。我一遍又一遍地阅读他们的服务有多棒,尤其是他们对Django-友好的程度。有一个具体的 post in their forums 是关于如何使用 Django 和 mod_wsgi 启动和运行的。

              像我之前在这个线程中的其他人一样,我强烈建议使用 Ian Bicking 的 virtualenv 来隔离您的开发环境;正是这种设置有一个dedicated page in the mod_wsgi documentation。

              我还敦促您查看pip,它基本上是一个更智能的easy_install,它了解virtualenv。 Pip 为 virtualenv 风格的开发做了两件非常好的事情:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2011-03-22
                • 1970-01-01
                • 2011-03-30
                • 2023-03-17
                • 1970-01-01
                • 2016-06-11
                • 2017-07-08
                相关资源
                最近更新 更多