1

CGI経由でApacheのNLTKツールキットでPythonを使用しています。ツールキットは APPDATA ディレクトリを認識する必要がありますが、サーバーで実行するとos.environAPPDATA.

print os.envrionコンソールで単純に実行するAPPDATAと存在しますが、Web サーバーで CGI を介して実行すると存在しません。

何が起こっている?どうすればこれを解決できますか? 私はPythonが初めてで、まだ学んでいます。

4

3 に答える 3

1

モジュールは実行前にこれをチェックします:

if sys.platform == 'win32' and 'APPDATA' in os.environ

しかし、APPDATA はあなたとは別の別のユーザーとして実行されているため、Apache には存在しません。

そのため、APPDATAを手動で割り当てる必要があります

import os
os.environ.__setitem__('APPDATA','C:\Python27\Lib\site-packages')

私の場合、python 2.7 を使用し、すべてのパッケージを site-packages に保存しているため、すべてのユーザーがアクセスできます。したがって、ユーザーに appdata フォルダーを提供する必要はありません。

于 2015-03-30T22:28:54.050 に答える
1

かなり可能です。CGI 環境は、コンソール内の環境とは異なります。

Apache から (からapache.conf)変数を設定できます。

SetEnv APPDATA 1.2.3.4.5
于 2012-06-27T04:23:51.253 に答える
1

%APPDATA%変数を展開するユーザー (つまり、スクリプトを実行するユーザー) の "Application Data" ディレクトリに展開される特別な変数です。Apache はあなたのように実行されていないため APPDATA ディレクトリについて知る必要はありません。

関連するパスをスクリプトにハードコードするか、スクリプトの場所に関連するパス ( r'..\data\nltk_data'. 本当に必要な場合は、 を参照して、スクリプトの絶対位置を回復できます__file__

于 2012-06-28T14:25:15.867 に答える