所以我一直在使用 PHP 进行开发,主要在 WordPress 网站上工作。我现在需要学习python。我在网上看了很多,虽然他们提供了关于如何学习 python 语言的简单教程,但我需要学习如何在我本地机器的 MAMP 服务器上开始它的开发。
通常对于 PHP,我会将 index.php 文件转储到 htdocs 文件夹中,然后使用 URL 导航到它,它就可以工作了。我知道 PHP 是最容易部署的,因为我在大学学习过 ASP.NET。不过,对于 Python,我已经了解了 cgi-bin 以及 MAMP 是如何安装 mod_wsgi 和 mod_python 的。我不太熟悉这些术语,也不熟悉如何在 MAMP 上开始使用它。我需要知道如何使用 python 运行网站。学习这门语言很容易,因为我可以从这里自己谷歌它,然后去 Django。
例如,如果我使用这段代码,它会输出hello world
:
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
但是,这段代码给我一个错误:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# enable debugging
import cgitb
cgitb.enable()
print "Content-Type: text/plain;charset=utf-8"
print
print "Hello World!"
日志中显示的错误是:
mod_wsgi (pid=1794): Target WSGI script '/Applications/MAMP/htdocs/test/index.py' does not contain WSGI application 'application'.
如您所见,我对那里发生的事情一无所知。我还没有接触任何 MAMP 配置文件。
TL;DR:我想知道如何在我的本地 MAMP 服务器上打开一个简单的 Python 生成的页面。我不知道它是如何工作的。我去哪里学习? (我还不想学语言)
最佳答案
首先:什么是网络服务器?它是一个持久运行的程序,监听特定端口上的传入 HTTP 流量,并通过解析传入的 HTTP 请求并将它们委托(delegate)给适当的处理程序来处理传入的 HTTP 请求。在典型的 MAMP 设置中,Apache 是网络服务器,您的 PHP 脚本是生成内容的代理。
现在,根据上面的定义,您不需要专用的网络服务器。您所需要的只是一个持续运行、监听端口并能够处理 HTTP 请求并产生响应的程序。 Python 有许多框架可以让它自己做到这一点。您只需启动一个 Python 程序,它将自身绑定(bind)到一个端口并为传入的 HTTP 请求生成响应。有关此类别的非常简单的框架,请查看 Tornado .您可以直接使用它的 Hello World 示例,将其放入一个文件中,以 $ python helloworld.py
启动它,您就拥有了一个 Python 网络服务器。
让像 Apache 这样的专用 Web 服务器处理连接管理并将 Python 委托(delegate)给纯内容生产是可能的。为此,Web 服务器需要一种与 Python 应用程序交互的方法。 CGI 是最基本的形式,最接近 PHP 的交互模型:Web 服务器为每个传入请求启动一个 Python 脚本,并将其输出作为响应。但是,这是非常低效的,每次启动和停止脚本都会产生大量开销。将 Python 作为 WSGI 模块运行效率更高。这将启动 Python 脚本一次并使其保持运行,并为 Web 服务器提供一种方法来为每个请求调用此脚本中的特定函数。开销更少,但执行模型与 PHP 截然不同。
关于python - PHP 开发人员如何开始使用 MAMP 和 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798001/