【问题标题】:Strange issue running Python script in php in browser在浏览器的 php 中运行 Python 脚本的奇怪问题
【发布时间】:2012-01-23 03:07:08
【问题描述】:

我正在使用 python 的 nltk 做一些有趣的事情来从 php 输入字符串,但是在将其输出到浏览器时遇到了一些困难。我的代码如下所示:

system("python test.py command line arguments");

无论我的 test.py 文件中有什么,它都能在命令行中正确输出。但是,除非存在特定代码,否则它会在浏览器中运行。

test.py 内部:

import string
import sys
from nltk import word_tokenize as wt
from nltk.corpus import wordnet as wn

x = ""
for item in sys.argv: x += item+" "

i = wt(x)
result = ""
wn.morphy(i[0])
print "hello world"

这不会在浏览器中打印“hello world”,但前提是前面的代码行。没有

wn.morphy

它会运行。不幸的是,我需要使用 wn.morphy。为什么这在我的 test.py 文件中具有特定代码行的浏览器中不起作用?我已经关闭了安全模式,这让我完全可以使用 python 输出到浏览器

【问题讨论】:

  • 你能展示一个完整的 PHP 脚本来解决这个问题吗?
  • 这实际上是显示问题的整个 php 脚本。在带有 php 和 python 的服务器上运行这两个程序应该会复制这个问题

标签: php python nltk


【解决方案1】:

实际上,无论我是否包含 wn.morphy 行,这段代码都适用于我在 PHP CLI 上,所以我认为您的问题出在其他地方,或者与版本相关。

您还记得下载“wordnet”语料库吗?如果没有,请运行

>>> import nltk
>>> nltk.download('wordnet')

在 Python 中,然后重试。我可以看到脚本出错,因为它无法进入语料库。

【讨论】:

  • 我确实下载了 wordnet 语料库,这就是它在控制台中工作的原因——它在 python 中肯定会出错,但我无法想象为什么它只会在浏览器中这样做。我检查了 phpdoc,两者都使用相同的 ini。
【解决方案2】:

什么是错误?可能是由于 WordNet 的大小(相当大)还是 Python/NLTK 加载它所花费的时间?实时 Web 服务器的配额可能比交互式控制台会话更严格。

【讨论】:

  • 我不知道错误可能是什么。导入 wordnet 可以,但是一旦我在其中使用了一个函数,它就不行了。可能 wordnet 太大而无法加载浏览器本身,只是因为它的限制不同,但服务器本身是相同的,因为我使用的命令行是 ssh 到它的。
猜你喜欢
  • 2011-12-08
  • 1970-01-01
  • 2022-11-18
  • 2016-05-25
  • 2012-11-19
  • 2013-04-24
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多