【发布时间】:2015-02-28 02:37:34
【问题描述】:
我遇到了一个 php 脚本的问题,它说它找不到文件 /root/nltk_data/tokenizers/punkt/english.pickle 。但是我确认文件在这里。 II 多次下载整个数据集)
php 脚本实际上运行了一个 python 脚本,而 nltk(一个 python 模块)说它找不到 /root/nltk_data/tokenizers/punkt/english.pickle
$dir = dirname(__FILE__);
$command = "/usr/bin/python ". $dir . "/test.py";
exec($command, $output);
另一方面,当我从命令行运行 python 脚本时,它工作得非常好并且能够访问该文件。
python test.py
是否可以启用 php 来查看这些文件?我 chmod 777 文件,但这没有帮助。
脚本包含:
#!/usr/bin/env/ python
import nltk
try:
tokens = nltk.word_tokenize("I like apples.")
tagged = nltk.pos_tag(tokens)
print "OK!"
#print ' * '.join(tokens)
except Exception:
print "error!"
pass
错误日志:
Traceback (most recent call last):
File "/var/zpanel/hostdata/zadmin/public_html/my_domain_com/test.py", line 39, in <module>
tagged = nltk.pos_tag(tokens)
File "/usr/local/lib/python2.7/site-packages/nltk-2.0.4-py2.7.egg/nltk/tag/__init__.py", line 99, in pos_tag
tagger = load(_POS_TAGGER)
File "/usr/local/lib/python2.7/site-packages/nltk-2.0.4-py2.7.egg/nltk/data.py", line 605, in load
resource_val = pickle.load(_open(resource_url))
File "/usr/local/lib/python2.7/site-packages/nltk-2.0.4-py2.7.egg/nltk/data.py", line 686, in _open
return find(path).open()
File "/usr/local/lib/python2.7/site-packages/nltk-2.0.4-py2.7.egg/nltk/data.py", line 467, 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:
- '/root/nltk_data'
- '/usr/share/nltk_data'
- '/usr/local/share/nltk_data'
- '/usr/lib/nltk_data'
- '/usr/local/lib/nltk_data'
【问题讨论】:
-
请发布完整的回溯错误消息。 php 脚本是否以与从命令行运行时不同的用户身份运行?
-
回显
$command变量并检查它是否正确。 -
是的 $command 是正确的,它适用于除 nltk 以外的其他 python 模块
-
A已添加错误日志
-
我很确定运行 php ius 的用户与从命令行运行的 usee 不同,但我不知道如何检查它。