php - 从命令行运行脚本和使用 PHP 从 exec() 运行脚本有什么区别?

标签 php python apache exec nltk

我正在尝试使用 PHP 中的 exec() 运行 Python 脚本。当我直接使用 cmd 窗口运行命令时,我的命令工作正常,但当我从 PHP 中的 exec() 运行它时,它会产生错误。

我的 Python 脚本使用 NTLK找到专有名词。示例命令:

"C:\Python25\python.exe" "C:\wamp\projects\python\trunk\tests\find_proper_nouns.py" "I went to London this morning" 

当我从 cmd 运行它时返回 [London],但是当我从 exec()< 运行相同的命令时在 Apache 日志中抛出错误。脚本肯定可以正常运行 - 如果我将 python 脚本更改为 print "Hello World" 则返回正常。

我知道任何人都知道如何修复这个 NLTK 错误是一个很大的要求,但我真的可以用任何指针来说明为什么从 exec 运行它与 cmd。 (命令相同)。

我在装有 Apache 2.2.11 的 Windows 7 上运行 WAMP。

这是 Apache 日志中的错误:

Traceback (most recent call last):
  File "C:\wamp\projects\python\trunk\tests\find_proper_nouns_command_line.py", line 6, in <module>
    parts = nltk.pos_tag(text)
  File "C:\Python25\lib\site-packages\nltk\tag\__init__.py", line 62, in pos_tag
    tagger = nltk.data.load(_POS_TAGGER)
  File "C:\Python25\lib\site-packages\nltk\data.py", line 590, in load
    resource_val = pickle.load(_open(resource_url))
  File "C:\Python25\lib\site-packages\nltk\data.py", line 669, in _open
    return find(path).open()
  File "C:\Python25\lib\site-packages\nltk\data.py", line 451, in find
    raise LookupError(resource_not_found)
LookupError: 
**********************************************************************
  Resource 'taggers/maxent_treebank_pos_tagger/english.pickle' not
  found.  Please use the NLTK Downloader to obtain the resource:
  >>> nltk.download().
  Searched in:
    - 'C:\\nltk_data'
    - 'D:\\nltk_data'
    - 'E:\\nltk_data'
    - 'C:\\Python25\\nltk_data'
    - 'C:\\Python25\\lib\\nltk_data'
    - 'C:\\Windows\\system32\\config\\systemprofile\\AppData\\Roaming\\nltk_data'
**********************************************************************

最佳答案

您必须运行 nltk.download() 并选择“maxent_treebank_pos_tagger”。你必须制作一个 python 脚本并在其中放入:

#!/usr/bin/python
import nltk
nltk.download('maxent_treebank_pos_tagger');

然后从命令行运行它。它将安装您尚未安装的 POS 标签的数据文件。

执行此操作后,它应该可以工作。

关于php - 从命令行运行脚本和使用 PHP 从 exec() 运行脚本有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2289046/

相关文章:

python - pyside qtableview 中的连接事件

缺少 Apache 2.4 mod_auth_form

java - 重新编译在没有源 java 文件夹的情况下部署在 apache tomcat 上的 Java 中创建的 Web 应用程序

php - 是否可以使用 PHP 开发 Windows 应用程序?

python - 通过调用包含绘图命令的函数在同一个图上绘制几个随机生成的线图

php - PHP 网站错误 : 403 Forbidden in centos 6. 4

python - 如何使 pygal 将图例分布到 n 列或正确截断?

apache - 双服务器部署 : PHP and Java

php - 来自结果的新 SQL PDO 查询

PHP 在多个函数之间传递变量