【问题标题】:how can I run this code as a webpage in python-apache-ubuntu server?如何在 python-apache-ubuntu 服务器中将此代码作为网页运行?
【发布时间】:2015-05-05 03:29:49
【问题描述】:

这段代码 sn-p 在普通的 python 解释器中工作,只是一个简单的二进制搜索。我需要添加/更改此代码以将其作为网页运行吗?

def binarySearch(s,array):
first=0;
last=len(array);
midpoint=first+(last-first)/2;
midpoint=int(midpoint);
#print(midpoint);
print (first,last,array[midpoint]);
if array[midpoint]==s: return (first,last,array[midpoint]);
while midpoint>1:
    if s>array[midpoint]:
        first=midpoint;
        print (first,last,array[midpoint]);
    elif s<array[midpoint]:
        last=midpoint;
        print (first,last,array[midpoint]);
    elif s==array[midpoint]:
        return (first,last,array[midpoint]);
    midpoint=first+(last-first)/2;
    midpoint=int(midpoint);
    #print(midpoint);

return None;

dArray=range(300);

print(binarySearch(90,dArray));

【问题讨论】:

  • 此代码引发IndentationError。即使你解决了这个问题,它也会打印出一大堆不相关的东西,然后在最后打印出None,而不是预期的答案。所以这是一个奇怪的“作品”定义。
  • 另外,不要将分号放在 Python 中的行尾。而且,更一般地,看看PEP 8
  • 无论如何,您希望“将其作为网页运行”是什么意思?您只想在有人访问特定 URL 时在浏览器中显示它打印的相同文本?
  • 最后,你标记了这个mod-python。这是否意味着它必须是mod_python 脚​​本?如果是这样,为什么不使用简单的 CGI、WSGI 或 Flask 应用程序?这意味着您已经对mod_python 有足够的了解来做出这样的决定,但是如果您知道这么多,您应该已经知道如何回答这个问题(或者至少了解大部分然后告诉我们您在哪里卡住)。你甚至读过the tutorial 吗?
  • 我本可以编写 print ("Hello World!);,但是在 apache 服务器中运行 python 脚本需要什么?关于 mod-python 部分;不是 apache 使用 mod-python 来在网络服务器中运行 python 脚本?基本上需要更改代码以使其在网络服务器中运行,这就是我正在寻找的部分。

标签: python ubuntu apache2 mod-python


【解决方案1】:

在这种情况下,“已更改以使其在网络服务器中运行”实际上并没有任何意义。您的代码(好吧,您必须修复它,以便它实际运行而不是引发异常,但我们假设您这样做了)已经可以作为 CGI 或 mod_python 脚本工作。您print(或以其他方式写入标准输出)的所有内容都将成为浏览器看到的响应。

您可能需要在程序顶部添加#!/usr/bin/env python3 或类似名称,就像您想在shell 中使用./hello.py 而不是python3 hello.py 运行程序一样。然后,只需配置您的服务器。如果您将 Apache 配置为允许在 /cgi-bin/ 目录中使用 CGI,并使用模式 755 将您的脚本复制到该目录,那么任何浏览到 http://myserver.example.com/cgi-bin/hello.py 的人都会返回文本 Hello, world!。如果您将 Apache 配置为使用 mod_python 而不是作为 CGI 运行 .py 脚本,现在您将看到完全相同的内容,除了可能稍微快一点或服务器上的负载稍微少一点。

【讨论】:

  • 我一直在检查用 python 编写代码,我的困惑是认为 python 是一个类似于 php 的 web 脚本工具。例如,在 python3 解释器中编写 print ("Hello World!") 非常简单,但在 web 上输入相同的内容;需要包含许多其他脚本。我的理解是;正如你之前所说的;我不得不使用一个框架。然后,我可以使用这些框架之一为 Web 编写更简单的代码。我不知道现在主要推荐哪一个,但我看到 DJANGO 在网络上使用得更多。是这样吗?
  • @user2653865:您可以将 Python 用作类似 PHP 的 Web 脚本工具。 CGI 的工作方式相同,mod_python 的工作方式与内置或 mod_php 解释器非常相似。这通常不是你想做的事情,因为你是对的,框架让事情变得简单多了。 (事实上​​,现在大多数 PHP 网站也使用框架。)
  • @user2653865:同时,Django 非常流行,但它也是一个非常大的框架,它有很多自己的习语需要学习。有些人更喜欢使用轻量级的框架,例如 Flask 或 Webapp2。其他人喜欢使用较低级别的东西,比如 Twisted 和一堆你必须自己在上面组装起来的构建块。很难说哪个是最好的。每个人都不同,即使是同一个人,不同网站也可能不同。
猜你喜欢
  • 1970-01-01
  • 2018-06-25
  • 2022-01-29
  • 2013-03-30
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
相关资源
最近更新 更多