CGI経由でApacheのNLTKツールキットでPythonを使用しています。ツールキットは APPDATA ディレクトリを認識する必要がありますが、サーバーで実行するとos.environ
、APPDATA
.
print os.envrion
コンソールで単純に実行するAPPDATA
と存在しますが、Web サーバーで CGI を介して実行すると存在しません。
何が起こっている?どうすればこれを解決できますか? 私はPythonが初めてで、まだ学んでいます。
モジュールは実行前にこれをチェックします:
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 フォルダーを提供する必要はありません。
かなり可能です。CGI 環境は、コンソール内の環境とは異なります。
Apache から (からapache.conf
)変数を設定できます。
SetEnv APPDATA 1.2.3.4.5
%APPDATA%
変数を展開するユーザー (つまり、スクリプトを実行するユーザー) の "Application Data" ディレクトリに展開される特別な変数です。Apache はあなたのように実行されていないため、 APPDATA ディレクトリについて知る必要はありません。
関連するパスをスクリプトにハードコードするか、スクリプトの場所に関連するパス ( r'..\data\nltk_data'
. 本当に必要な場合は、 を参照して、スクリプトの絶対位置を回復できます__file__
。