7

PHP 内から exec() を使用して Python スクリプトを実行しようとしています。コマンドをウィンドウから直接実行すると正常に動作しますが、PHPcmdから実行するとエラーが発生します。exec()

私の Python スクリプトはNTLKを使用して固有名詞を検索します。コマンド例:

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

[London]から実行すると返されますcmdが、から同じコマンドを実行するとApacheログにエラーがスローされexec()ます。スクリプトは間違いなく正常に実行されます-pythonスクリプトを変更すると、print "Hello World"正常に返されます

この NLTK エラーを修正する方法を誰かに教えてほしいというのは大きな要望であることは承知していますが、なぜ から実行するのexeccmd. (コマンドは同じです)。

Windows 7 で Apache 2.2.11 を使用して 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'
**********************************************************************
4

3 に答える 3

31

nltk.download()「maxent_treebank_pos_tagger」を実行して選択する必要があります。Python スクリプトを作成し、その中に次のように記述しなければなりません。

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

次に、コマンドラインから実行します。まだインストールしていない POS タグのデータ ファイルがインストールされます。

これを行うと、動作するはずです。

于 2011-03-06T03:49:37.807 に答える
2

Web サーバーは、自分以外の権限で実行されている可能性があります。考えられる問題は次のとおりです。

  • パス/ファイルのアクセス許可: Web サーバーのユーザーは、必要なファイルにアクセスできますか?
  • 別の環境: 必要な環境変数 (PATH、Python 固有のものなど) はすべて設定されていますか?
  • 構成: Python またはモジュールのユーザーごとの構成はありますか?

ヒント:setコマンド プロンプトと PHP プロセスの両方で実行し、違いを確認してください。

于 2010-02-19T09:52:43.117 に答える