Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何开始为PHP开发人员使用MAMP和Python?_Python_Mamp - Fatal编程技术网

如何开始为PHP开发人员使用MAMP和Python?

如何开始为PHP开发人员使用MAMP和Python?,python,mamp,Python,Mamp,所以我一直在使用PHP进行开发,主要是在WordPress网站上工作。我现在需要学习python。我在网上读了很多书,虽然他们提供了关于如何学习python语言的简单教程,但我需要学习如何在本地机器的MAMP服务器上开始开发python 通常对于PHP,我会将index.PHP文件转储到htdocs文件夹中,并使用URL导航到它,然后它就可以工作了。我知道PHP是最容易部署的,正如我在大学里学到的ASP.NET一样。不过,对于Python,我已经阅读了关于CGIBIN的内容,以及MAMP是如何安

所以我一直在使用PHP进行开发,主要是在WordPress网站上工作。我现在需要学习python。我在网上读了很多书,虽然他们提供了关于如何学习python语言的简单教程,但我需要学习如何在本地机器的MAMP服务器上开始开发python

通常对于PHP,我会将index.PHP文件转储到htdocs文件夹中,并使用URL导航到它,然后它就可以工作了。我知道PHP是最容易部署的,正如我在大学里学到的ASP.NET一样。不过,对于Python,我已经阅读了关于CGIBIN的内容,以及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生成页面。我不知道它是怎么工作的。我在哪里学习?(我还不想学这种语言)

首先:什么是web服务器?它是一个持续运行的程序,侦听特定端口上传入的HTTP通信,并通过解析传入的HTTP请求并将其委托给适当的处理程序来处理这些请求。在典型的MAMP设置中,Apache是web服务器,PHP脚本是生成内容的委托

现在,根据上面的定义,您不需要专用的web服务器。您所需要的只是一个持续运行的程序,它侦听端口,能够处理HTTP请求并生成响应。Python有许多框架允许它自己完成这项工作。您只需启动一个Python程序,它将自身绑定到一个端口,并为传入的HTTP请求生成响应。对于这类非常简单的框架,请参见。您可以直接以Hello World为例,将其放在一个文件中,从
$python helloworld.py
开始,您就拥有了一个python web服务器


可以让Apache这样的专用web服务器处理连接管理,并将Python委托给纯内容生产。为此,web服务器需要有一种与Python应用程序交互的方式。CGI是最基本的形式,最接近PHP的交互模型:web服务器为每个传入请求启动一个Python脚本,并将其输出作为响应。但这是非常低效的,每次启动和停止脚本都会有很大的开销。将Python作为WSGI模块运行更有效。这将启动Python脚本一次并使其保持运行,并为web服务器提供一种方法来为每个请求调用脚本中的特定函数。开销更少,但执行模型与PHP截然不同。

创建一个名为hellopython(或其他)的python脚本,无扩展:

#!/usr/bin/python
print 'Content-type: text/html\n\n'
print '<html><head></head><body>Hello from Python!</body></html>'
确保它是可执行的

chmod +x hellopython
从MAMP本地主机查看

http://localhost:8888/cgi-bin/hellopython

在cgi-bin目录之外,您也可以这样做,但是将其扩展为.cgi

虽然您可以将Python作为web服务器WSGI模块运行,但也可以将Python程序作为自己的独立web服务器运行。例如,
$python my_script.py
,然后打开浏览器。例如,看看Tornado这个简单的Python web服务器/框架,我不太理解你的问题。你是说你有一段代码可以工作,而另一段代码不能工作。第二段代码不起作用,因为它使用了错误的API(不能将CGI应用程序与WSGI服务器一起使用)。你为什么不继续使用这个API呢?@yole,我不知道你刚才的意思。我需要了解这一点。通常当我在Google上搜索Web python时,我得到的只是python语言教程。什么是虚拟的cgi和wsgi服务器?或者我没有使用正确的关键字?WSGI的第一个谷歌结果是包含所有相关信息。对于CGI来说,也很有帮助。很简单,WSGI是一个协议——它为web服务器和Python进程指定了一个API进行交互。CGI也是一个协议,但它是一个不同的协议。WSGI假设服务器代码和服务代码可以相互调用(它要求服务代码提供一个可调用的调用,该调用接受请求环境和来自服务器代码的响应回调)。CGI只假设一个普通的UNIX环境(它通过环境变量和STDIN发送数据,并期望所提供的代码在STDOUT上响应)。所有要点的回答都很好,还可以添加#/usr/bin/python行可以更改为安装在磁盘任何部分上的任何版本的python。
http://localhost:8888/cgi-bin/hellopython